Innehållsförteckning:

Arduino 2-i-1 modell tågkontroller: 4 steg
Arduino 2-i-1 modell tågkontroller: 4 steg

Video: Arduino 2-i-1 modell tågkontroller: 4 steg

Video: Arduino 2-i-1 modell tågkontroller: 4 steg
Video: Arduino IDE 2.0 зачем нужна новая среда разработки? 2024, November
Anonim
Arduino 2-i-1 modell tågkontroller
Arduino 2-i-1 modell tågkontroller

För fyrtio år sedan konstruerade jag en op-amp-baserad modell tåggas för ett par vänner, och sedan för ungefär fyra år sedan återskapade jag den med en PIC-mikrokontroller. Detta Arduino -projekt återskapar PIC -versionen men lägger också till möjligheten att använda en Bluetooth -anslutning istället för de manuella omkopplarna för gas-, broms- och riktningsreglering. Medan designen jag presenterar här är inriktad på en 12 volt modell järnvägsmotor, kan den enkelt modifieras för en mängd andra DC -motorstyrningstillämpningar.

Steg 1: Pulsbreddsmodulering (PWM)

Pulsbreddsmodulering (PWM)
Pulsbreddsmodulering (PWM)

För er som inte känner till PWM är det inte så läskigt som det låter. Allt det verkligen betyder för vår enkla motorstyrningsapplikation är att vi genererar en fyrkantvåg med viss frekvens, och sedan ändrar vi arbetscykeln. Driftcykel definieras som förhållandet mellan tid som utsignalen är en logisk hög jämfört med vågformsperioden. Du kan se det ganska tydligt i diagrammet ovan med den övre vågformen vid 10% arbetscykel, den mellersta vågformen vid 50% arbetscykel och den nedre vågformen vid 90% arbetscykel. Den streckade linjen överlagrad på varje vågform representerar ekvivalent likspänning som ses av motorn. Med tanke på att Arduino har en inbyggd PWM -kapacitet är det verkligen ganska enkelt att generera denna typ av DC -motorstyrning. En annan fördel med att använda PWM är att det hjälper till att hålla motorn från den starkt uppstart som kan hända när man använder rak DC. En nackdel med PWM är att det ibland hörs ett ljud från motorn vid frekvensen av PWM.

Steg 2: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara
Hårdvara
Hårdvara

Den första bilden visar Arduino -anslutningarna för omkopplarna och LM298 -drivrutinsmodulen. Det finns svaga uppdragningsmotstånd internt i Arduino så inga uppdragningsmotstånd behövs för omkopplarna. Riktningsomkopplaren är en enkel SPST -omkopplare (enpolig enkelkastning). Gas- och bromsknapparna visas som normalt öppna, tillfälliga kontaktknappar.

Den andra bilden visar Arduino -anslutningarna för Bluetooth -modulen och LM298 -drivrutinsmodulen. Bluetooth TXD -utgången ansluts direkt till Arduino RX seriell ingång.

Den tredje bilden är en L298N dual H-bridge-modul. LM298 -modulen har en inbyggd 5 volt regulator som kan aktiveras av en bygel. Vi behöver +5 volt för Arduino och Bluetooth men vi vill att +12 volt ska driva motorn. I detta fall applicerar vi +12 volt på ingången " +12V effekt" på L298N och vi låter bygeln "5V aktivera" vara på plats. Detta gör att 5-voltsregulatorn kan mata ut till "+5 power" -anslutningen på modulen. Anslut det till Arduino och Bluetooth. Glöm inte att ansluta jordledningarna för +12 -ingången och +5 -utgången till modulen "power GND".

Vi vill att utspänningen till motorn varierar baserat på PWM som genereras av Arduino istället för att bara vara full på eller helt av. För att göra det tar vi bort hopparna från "ENA" och "ENB" och ansluter vår Arduino PWM -utgång till "ENA" på modulen. Tänk på att den faktiska aktiveringsnålen är den som ligger närmast brädans kant (bredvid "input" -stiftarna). Bakstiftet för varje aktivering är +5 volt så vi vill se till att vi inte ansluter till det.

"IN1" och "IN2" stiften på modulen är anslutna till respektive Arduino stift. Dessa stift styr motorriktningen och, ja, det finns en bra anledning att låta Arduino styra dem istället för att helt enkelt ansluta en omkopplare till modulen. Vi kommer att se varför i diskussionen om programvara.

Steg 3: Bluetooth -modul

Bluetooth -modul
Bluetooth -modul

Bilden som visas här är typisk för de tillgängliga Bluetooth -modulerna. När du letar efter en att köpa kan du söka på termerna "HC-05" och HC-06 ". Skillnaderna mellan de två är i firmware och vanligtvis i antalet stift på kortet. Bilden ovan är av en HC-06-modul och levereras med förenklad firmware som bara tillåter mycket grundläggande konfiguration. Det är också inställt som en Bluetooth -enhet som bara är "slav". Enkelt uttryckt betyder det att den bara kan svara på kommandon från en "Master" -enhet och inte kan utfärda kommandon på egen hand. HC-05-modulen har fler konfigurationsmöjligheter och kan ställas in som antingen en "Master" eller "Slave" -enhet. HC-05 har vanligtvis sex stift istället för bara de fyra som visas ovan för HC-06. Statspinnen är inte riktigt viktig, men nyckelpinnen (går ibland under andra namn som "EN") krävs om du vill göra någon konfiguration. I allmänhet behöver modulerna ingen konfiguration om du är ok med standardöverföringshastigheten 9600 och inte bryr dig om att ge ett specifikt namn till modulen. Jag har flera projekt där jag använder dessa så jag gillar att namnge dem därefter.

För att konfigurera Bluetooth-modulerna krävs att du antingen köper eller bygger ett gränssnitt till en RS-232 seriell port eller till en USB-port. Jag kommer inte att täcka hur man bygger en i det här inlägget men du borde kunna hitta information på webben. Eller bara köpa ett gränssnitt. Konfigurationskommandona använder AT -kommandon ungefär som de som användes förr i tiden med telefonmodem. Jag har bifogat en användarmanual här som innehåller AT -kommandon för varje modultyp. En sak att notera är att HC-06 kräver UPPERCASE-kommandon och kommandosträngen måste slutföras inom 1 sekund. Det betyder att några av de längre strängarna för saker som att ändra överföringshastigheter måste klippas och klistras in i ditt terminalprogram eller att du måste konfigurera textfiler för att skicka. UPPERCASE -kravet är bara om du försöker skicka konfigurationskommandon. Vanligt kommunikationsläge kan acceptera alla 8-bitars data.

Steg 4: Programvara

Programvaran är ganska enkel för både den manuella versionen och Bluetooth -versionen. För att välja Bluetooth -versionen, avmarkera bara uttalandet "#define BT_Ctrl".

När jag skrev PIC-koden experimenterade jag med PWM-frekvensen och bestämde mig slutligen på 500 Hz. Jag upptäckte att om frekvensen var för hög då kunde LM298N -modulen inte reagera tillräckligt snabbt på pulserna. Det innebar att spänningsutgången inte var linjär och kunde ta stora hopp. Arduino har inbyggda PWM -kommandon men de låter dig bara variera arbetscykeln och inte frekvensen. Lyckligtvis är frekvensen cirka 490 Hz så det är tillräckligt nära 500-Hz jag använde på PIC.

En av tåggasens”egenskaper” är en känsla av fart för acceleration och inbromsning för att simulera hur ett riktigt tåg fungerar. För att uppnå detta infogas en enkel tidsfördröjning i slingan för den manuella versionen av programvaran. Med det visade värdet tar det cirka 13 sekunder att gå från 0 till 12 volt eller från 12 volt tillbaka till noll. Fördröjningen kan enkelt ändras under längre eller kortare tider. Det enda fallet där momentum inte är i kraft är när riktningsomkopplaren ändras. Av skyddssyfte ställs PWM -driftscykeln omedelbart in på 0% när denna omkopplare ändras. Det gör faktiskt att riktningsomkopplaren också fungerar som en nödbroms.

För att säkerställa omedelbar hantering av riktningsomkopplaren lägger jag in dess kod i en avbrottshanterare. Det gör det också möjligt för oss att använda funktionen "avbryt vid förändring" så det spelar ingen roll om ändringen är från låg till hög eller hög till låg.

Bluetooth -versionen av programvaran använder kommandon med en bokstav för att initiera funktionerna Framåt, Bakåt, Broms och Gas. I själva verket ersätter de mottagna kommandona de manuella omkopplarna men orsakar samma svar. Appen jag använder för Bluetooth -kontroll kallas "Bluetooth Serial Controller" av Next Prototypes. Det låter dig konfigurera en virtuell knappsats och ställa in dina egna kommandosträngar och namn för varje tangent. Det låter dig också ställa in en upprepningsfrekvens så jag ställde in broms- och gasreglageknapparna på 50 ms för att ge cirka 14 sekunders fart. Jag inaktiverade upprepningsfunktionen för knapparna Framåt och Bakåt.

Det är det för det här inlägget. Kolla in mina andra instruktioner. Om du är intresserad av PIC -mikrokontrollerprojekt, kolla in min webbplats på www.boomerrules.wordpress.com

Rekommenderad: