Robot plattform inklusive h-broar från $10 R/C bil (4 / 5 steg)
Steg 4: Testa PCB och Lägg på handkontrollen
Efter tittar på PCB och göra några tester, upptäckte jag följande pin info:
stift 2 - marken
PIN-6,7 - kontroller vänster motor h-bron
PIN 10,11 - kontroller rätt motor h-bron
stift 13 - Vcc utgång från batteriet.
Jag antar att de andra stiften är städning och att få input från mottagaren komponenter. Även att ha en trådlös tillförs PCB kan vara praktiskt för något i framtiden, just nu är jag intresserad av h-broarna och hur du kontrollera dem.
H-bron för varje sida är gjord av 4 drivatransistorerna och 2 vanliga transistorer. På min PCB, drivatransistorerna där ett par H8050 och H8550, som kontrolleras av ett par vanliga transistorer, C945s. Alla är i det fysiska paketet till-92. Jag misstänker att andra transistorer kan användas på andra PCB, det var en fråga av vem hade det i lager till ett billigt pris den dagen. Jag hittade några datablad för H8050 och H8550 och det ser ut som varje h-brygga klassas till 1,5 ampere. Igen, det kan finnas olika komponenter på andra PCB på andra tumlare, men den grundläggande 1.5a betyg bör förbli detsamma.
För varje h-brygga finns det ett par stift som styr den. Pins #6 och #7 för vänster sida, och #10 och #11 för höger sida.
Vänster hjul:
Stift 6: OFF, Pin 7: OFF - ingenting, ingen rörelse
STIFT 6: På, Pin 7: OFF - hjulet roterar - riktning framåt
STIFT 6: OFF, Pin 7: Å - hjulet roterar - omvänd riktning
STIFT 6: På, Pin 7: ON - oprövad, misstänker att detta kan steka något i en rökpuff.
Höger hjul:
Stift 10: OFF, Pin 11: OFF - ingenting, ingen rörelse
STIFT 10: På, Pin 11: OFF - hjulet roterar - omvänd riktning
STIFT 10: OFF, Pin 11: Å - hjulet roterar - riktning framåt
STIFT 10: På, Pin 11: ON - oprövad, misstänker att detta kan steka något i en rökpuff.
Båda verkar arbeta för stiften på "OFF" läge, N/C eller marken. På allmän princip föreslår jag att hålla sig till marken och inte N/C.
Vad betyder det alla?
För att driva en viss sida av roboten, behöver du två digitala utgångar, förhoppningsvis klarar PWM. Det tar fyra utgångar för båda sidor. Till exempel, om jag ville gå vidare med 40% max hastighet skulle jag ställa in min pins såhär:
stift 6: PWM-signal på 40%
stift 7: marken (PWM 0%)
stift 10: marken (PWM 0%)
stift 11: PWM-signal på 40%
Jag har använt vanliga Arduino PWM frekvensen för runt 500Hz och som fungerar för att växla h-broar av och på bra. Jag skulle inte bli förvånad om komponenterna som hanteras upp till 20 KHz spänna.
När koppla upp din microcontroller och använda ett annat batteri för data signaler (som 9V jag använde), glöm inte att "dela en marken" tråd mellan två. Om du tittar på mina bilder, det är därför jag har en tråd från #2 stift på IC uttaget till jordplanet av min skärbräda.
Så för min test setup använde jag den Arduino PWM signaler:
Arduino: tumlaren
stift 9---stift 6
stift 10---stift 7
stift 3---stift 11
stift 11---stift 10
Här är några hårdkodade, ful Provningsmetod. Men det fungerar och visar den allmänna idén. Det är en loop som går så här:
Starta loop
driva fram vid 50% effekt i 2 sekunder
vänta 2 sekunder
kör i omvänd vid 50% effekt i 2 sekunder
vänta 2 sekunder
slinga till toppen
Det visar mig att detta inte är det mest exakta motor/hjulet justering jag sett, men det fungerar. Jag ska jobba på bättre hjul kontrollkod över tiden - måste få laseravståndsmätare först!
Tumbler1
av Ray rådman
//
Anslutningar till Tumber PCB
//
Arduino: tumlaren
stift 9---stift 6
stift 10---stift 7
stift 3---stift 11
stift 11---stift 10
marken---stift 2 (mark)
//
//
int RightFwd = 3; PWM-signalen att gå framåt på höger hjul
int RightRev = 11; PWM-signalen att gå bakåt på höger hjul
int LeftFwd = 9; PWM-signalen att gå framåt på vänster hjul
int LeftRev = 10; PWM-signalen att gå bakåt på vänster hjul
int fördröjningstid = 2000. fördröjning mellan stegen
int speedval = 127; hastighet framåt och bakåt, till 50% (av max 255)
void setup()
{
pinMode (RightFwd, OUTPUT);
digitalWrite (RightFwd, låg); Se till att produktionen är initialt vid låga
pinMode (RightRev, OUTPUT);
digitalWrite (RightRev, låg); Se till att produktionen är initialt vid låga
pinMode (LeftFwd, OUTPUT);
digitalWrite (LeftFwd, låg); Se till att produktionen är initialt vid låga
pinMode (LeftRev, OUTPUT);
digitalWrite (LeftRev, låg); Se till att produktionen är initialt vid låga
Delay(delaytime);
}
void loop()
{
analogWrite (LeftRev, 0);
analogWrite (LeftFwd, speedval); vänder på vänstra hjulet i riktning framåt till hastighet värde
analogWrite (RightRev, 0);
analogWrite (RightFwd, speedval); vänder på högra hjulet i riktning framåt till hastighet värde
Delay(delaytime);
analogWrite (LeftFwd, 0); stänger av vänstra hjulet
analogWrite (RightFwd, 0); stänger av högra hjulet
Delay(delaytime);
analogWrite (LeftRev, speedval); vänder på vänstra hjulet i motsatt riktning till hastighet värde
analogWrite (RightRev, speedval); vänder på högra hjulet i omvänd riktning till hastighet värde
Delay(delaytime);
}