Hjälp. min h-brygga funkar inte

Robot, CNC, Pneumatik, Hydraulik, mm
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Hjälp. min h-brygga funkar inte

Inlägg av Virr3 »

hejsan.

jag kopplade upp en h-brygga efter detta schema
Bild

och denna kod i min ATMega32:a

Kod: Markera allt

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <joerg@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return.        Joerg Wunsch
 * ----------------------------------------------------------------------------
 *
 * Simple AVR demonstration.  Controls a LED that can be directly
 * connected from OC1/OC1A to GND.  The brightness of the LED is
 * controlled with the PWM.  After each period of the PWM, the PWM
 * value is either incremented or decremented, that's all.
 *
 * $Id: demo.c,v 1.1 2002/09/30 18:16:07 troth Exp $
 */

#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "a2d.c"

#  define OC1 PB5
#  define DDROC DDRD
#  define OCR OCR1A

volatile uint16_t pwm;
volatile uint16_t freq;
volatile uint8_t direction;


SIGNAL (SIG_OVERFLOW1)
{

	
    //OCR = pwm_min + ((pwm_scope/255)*pwm); /* Note [4] */
	//ICR1=0x1000+(freq*24);
	
	// Pulslängd ca 10ms gav bra respons
	ICR1=10000;
	
	//Försök att använda hela området på vridpot
	//pwm_scope=(936/1024)*pwm;
	//OCR=600+pwm_scope;
	
	// Det som funka bäst
	if(pwm*2<1536) // För att inte ge för lång pulstid till servot
		OCR=600+(pwm*2);
	
	// Försök med 8bit ad, 512*3=1536
	//OCR=600+(pwm*3);
}



void
ioinit (void) 
{
	a2dInit(); // Initierar ADC
	
    
    // Using phase & freq correct pwm, TOP=ICR1, freq scaling = 8
	TCCR1A = _BV (COM1A1);
    TCCR1B = _BV (CS11) | _BV (WGM13);
    /* set PWM value to 0 */
    OCR = 0;
    ICR1 = 0;
    /* enable OC1 and PB2 as output */
    DDRD = _BV (OC1);
    //DDRD= 0xFF;
    timer_enable_int (_BV (TOIE1));

    /* enable interrupts */
    sei ();
}

int
main (void)
{
    ioinit ();

    

    while(1)
	{
		pwm=a2dConvert10bit(0);
		freq=a2dConvert10bit(2);
	}

    return (0);
}
jag kollade med en multimeter och jag får något blinkade mellan 0 och 13

sedan råkade jag komma åt basen och kolektorn på 2n2222:an sammtidigt och då började motornn gå igång..

någon som har en aning om vad som kan vara fel?
[/code]
evert2
Inlägg: 2182
Blev medlem: 18 april 2004, 22:47:56
Ort: Jönköping

Inlägg av evert2 »

Jag är ingen j*vel på kod så jag tar väl en titt på hårdvaran.........

Jag skulle först mäta med ingångarna REV och FWD låga (nolla) och mäta lite här och var.....Sen mata FWD med 1:a å REV 0:a....å mäta. Därefter REV som 1:a och FWD 0:a........å mäta ännu mera...

Kolla om 2N2222:an är rätt kopplad......hm annars vet jag inte vad det kan vara för fel :?

Edit: Mät på kollektorn, basen och emittern ( på 2N2222:orna ) då ingångarna har de olika tillstånden enligt ovanstående beskrivning...
Användarvisningsbild
rickeboy
Inlägg: 678
Blev medlem: 13 augusti 2003, 09:12:17
Ort: Göteborg / Karlskrona
Kontakt:

Inlägg av rickeboy »

"// För att inte ge för lång pulstid till servot"

Hmm... du har alltså kopplat ett vanligt RC-servo till H-bryggan? Inte jätte konstigt att det inte funkar ;) Testa med en vanlig DC motor... (liten DC motor that is) och se om det funkar bättre... samt försök felsöka ett bra tag innan du ger upp... samt försök förstå vad koden gör... och om den ens gör det du hade tänkt dig eller att den gör det som du behöver... (ser nämligen att du har kopierat koden av ngn snubbe)...

Skriv om den själv och försök förstå :) Tro mig... du vinner så mkt mer på det...

//Rille
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

pulstiden har jahg försökt att ändra ett par ggr men ingen skilnad..

dc motor är det jag använder mig av..

jag vet inte om transistor basen får för lite med kräm..:S
Användarvisningsbild
EagleSpirit
Inlägg: 1288
Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:

Inlägg av EagleSpirit »

om du har en tillräckligt svag motor borde det inte vara nå problem att driva motorn konstant. Därmed skulle du kunna koppla rwd direkt till jord och sen fwd till +5V. Jag tror det är en farlig modell så koppla aldrig fwd och rwd till 5v samtidigt för då tror jag det blir kortslutning. PWM funktionen funkar ju inte då men du får iaf se om bryggan funkar som den ska. Om det funkar kan du ju börja se över koden lite
evert2
Inlägg: 2182
Blev medlem: 18 april 2004, 22:47:56
Ort: Jönköping

Inlägg av evert2 »

Virr3: Jag gissar att du matar basresistorerna med 5Volt för 1:a.

I(B(2N2222))=(5-1,4)V/1KOhm=3,6mA I(C(2N2222))= I(B)*hfe
hfe borde vara ca 200?........I(C(2N222))=720mA.. .........teoretiskt.......hmmm...det borde räcka gott o väl.
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

varför jag tror som jag tror är att om jag nuddar dåde basen ock kolektorn men enar pinnen från multimetern så går den igång..
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Har du provat att koppla in FWD eller REV-ingångarna på h-bryggan direkt till +5 volt med en kabel bara.

Går motorn i gång då så är det mjukvaran det är del på.
Händer det inget så är det h-bryggan som är felkopplad.
Användarvisningsbild
EagleSpirit
Inlägg: 1288
Blev medlem: 27 maj 2003, 23:15:48
Ort: Västerås
Kontakt:

Inlägg av EagleSpirit »

ojdå, ja REV skulle det ju stå däruppe, inte RWD. aja testa iaf endast hårdvaran först om det är möjligt, sen mjukvaran. Det är alltid bäst. Man ska begränsa möjligheterna till fel så mycket som möjligt
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

har testat mjukvaran på en lysdiod med bra resultat.. så jag tror att den är okej..

ska kolla hårdvaran alldeles strax.. skit trött nu men återkommer med resultat..
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

nunhar jag provat med en spänning på 3v istället..
inget händer nu häller...

kollade med en multimeter och det är ingen aktivitet över något av motstånden.. men om jag kollar mällan emittern och kolektorn på tip32:an så visar den ~200 med inställningen 2000m lik.. och mällan bas och kolektor ~10

på tip31:an så visar den mällan bas och kolektor 1-3 och mällan kollektor och emitter ~56

på 2n2222:an så är det ~-1750 mällan bas och kolektor och melllan kolektor och emitter så visar den 0-1

lite mätningar.. vill ni att jag ska kolla mer så säj till men jag hoppas att detta räcker..


jättesnällt att ni vill hjälpa till :tumupp:
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Har du provat at lägga 5 volt på FWD eller REV-ingångarna?

Du gör det med en kabel till plus 5 volt alltså. Inget som du gör med mätaren.
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

jo det är precis det jag gjort nu och mätt :doubt: kanske var lite luddigt inlägget senast men så är läget iaf..
evert2
Inlägg: 2182
Blev medlem: 18 april 2004, 22:47:56
Ort: Jönköping

Inlägg av evert2 »

Virr3: Jag undrar vad det är för mätvärden du nämner, jag hänger inte med riktigt.

Vad jag hade i tankarna var att du bör först kontrollera att 2N2222:an är korrekt kopplad i kretsen.........

Om du först låter ena 2N2222:an matas med en 0:a. Den andra 2N2222:an matas med en 1:a...då skall du mäta spänningen på basen på denna transistor.Den bör ligga nånstans mellan 1,3 V-1,6V om inte så är det nåt som är fel......Emittern på samma transitor bör ha en spänning på ca 0,6-0,8 V...........å kollektor spänningen bör vara kring 0,8-1,1 V. Sen gör du om proceduren för den andra 2N2222:an.
Virr3
Inlägg: 840
Blev medlem: 25 juli 2004, 23:05:59
Ort: Göteborg

Inlägg av Virr3 »

får kanske formulera mig lite bättre(inte min starka sida;))

det är helt dött över alla motstånd..

och på 2n2222:an så är det -1750 mällan bas och kolektor..


känns som att det är där det inte stämmer..

men det skal vara rätt..

provar lite medans jag är vaken nu..

men varför får jag en 0 när jag mäter på benen av motstånden?
Skriv svar