Radiostyrd bil med anti sladd (arduino)
Radiostyrd bil med anti sladd (arduino)
Tjo!
Detta är väl egentligen mitt första riktiga elektronikprojekt skulle man kalla det.
Jag har sen tidigare på jobbet byggt den här skapelsen:
http://elektronikforumet.com/forum/view ... =4&t=25943
Men den här gången så är jag ute efter ett nättare fordon men inte lika många delar och som dessutom styrs av en mikrokontroller.
Det hela började med att jag skaffade mig en byggsats på en 3d-skrivare av modellen mendel prusa. Styrningen av denna görs med en Arduino mega med tillhörande drivkort för motorstyrningar och annat för att styra skrivaren. Bygget av skrivaren gav mig blodad tand och fick mig att införskaffa en arduion Uno mikrokontroller och en tillhörande "shield" för att styra två motorer. Eftersom jag är väldigt intresserad av fordon vad det gäller hjul slip och chassi reglering så kom jag till insikt att jag ska bygga mig en bil med två motorer och därmed möjlighet att göra så kallad "torque vectoring".
Första steget var att få till mätning av hjulhastighet. Ett gäng LM2907 och läsgafflar inhandlades och jag började med att med hjälp av min 3d-skrivare bygga hjulnav och delar som gav plats för dessa komponenter. Även ett par motorer inhandlades och en utväxling trollades fram med hjälp av 3d-skrivaren.
För att få LM2907 kretsarna att omvandla en frekvens till en spänning så krävs det ett pulståg som skiftar spänning kring jord och det löstes genom att göra en sk "AC-koppling" med ett par motstånd och en kondensator. Kopplingsschemat är annars direkt ifrån databladet där bakhjulen avläses separat och framhjulen är kopplade så att medelhastigheten fås ut som en signal. Det eftersom Arduinon har ett begränsat antal analoga ingångar.
Till övriga analoga ingångar ska ett gyro och två accelerometrar kopplas.
Radiostyrningen och inkoppling av denna till arduinon är gjord med inspiration från denna blogg:
http://rcarduino.blogspot.se/2012/04/ho ... draft.html
Som ses på bilden är i princip hela bilen byggd med 3d-skrivaren. Skruv ett gäng kullager och en uppsättning hjul var annars det som behöves för att få liv i bilen.
Bilen rullar idag med signalerna spolade rakt igenom arduino-koden och jag har gjort en första extremt enkel "traction control" där jag tar framhjulens hastighet som fordonshastighet och jämför med bakhjulens hastighet genom att beräkna hjulslip. Och när hjulslip övergår ett visst värde (här 0.3) så halvas gas signalen till nämda hjul.
Målet är att få till en gir reglering (DYC=Direct Yaw Control) genom att ha en referensmodell av bilen i koden som matas av aktuell uppmätt fordonshastighet och styrvinkel. Sedan så jämförs girvinkelhasigheten från referensmodellen med den uppmätta girvinkelhastigheten från gyrot ombord. Felet mellan värdera styr sen hur stort differentiellt drivmoment som läggs över bakhjulen. Dvs genom att bromsa ett hjul och driva med det andra för att effektivt få ett girmoment på bilen.
/Johannes
Detta är väl egentligen mitt första riktiga elektronikprojekt skulle man kalla det.
Jag har sen tidigare på jobbet byggt den här skapelsen:
http://elektronikforumet.com/forum/view ... =4&t=25943
Men den här gången så är jag ute efter ett nättare fordon men inte lika många delar och som dessutom styrs av en mikrokontroller.
Det hela började med att jag skaffade mig en byggsats på en 3d-skrivare av modellen mendel prusa. Styrningen av denna görs med en Arduino mega med tillhörande drivkort för motorstyrningar och annat för att styra skrivaren. Bygget av skrivaren gav mig blodad tand och fick mig att införskaffa en arduion Uno mikrokontroller och en tillhörande "shield" för att styra två motorer. Eftersom jag är väldigt intresserad av fordon vad det gäller hjul slip och chassi reglering så kom jag till insikt att jag ska bygga mig en bil med två motorer och därmed möjlighet att göra så kallad "torque vectoring".
Första steget var att få till mätning av hjulhastighet. Ett gäng LM2907 och läsgafflar inhandlades och jag började med att med hjälp av min 3d-skrivare bygga hjulnav och delar som gav plats för dessa komponenter. Även ett par motorer inhandlades och en utväxling trollades fram med hjälp av 3d-skrivaren.
För att få LM2907 kretsarna att omvandla en frekvens till en spänning så krävs det ett pulståg som skiftar spänning kring jord och det löstes genom att göra en sk "AC-koppling" med ett par motstånd och en kondensator. Kopplingsschemat är annars direkt ifrån databladet där bakhjulen avläses separat och framhjulen är kopplade så att medelhastigheten fås ut som en signal. Det eftersom Arduinon har ett begränsat antal analoga ingångar.
Till övriga analoga ingångar ska ett gyro och två accelerometrar kopplas.
Radiostyrningen och inkoppling av denna till arduinon är gjord med inspiration från denna blogg:
http://rcarduino.blogspot.se/2012/04/ho ... draft.html
Som ses på bilden är i princip hela bilen byggd med 3d-skrivaren. Skruv ett gäng kullager och en uppsättning hjul var annars det som behöves för att få liv i bilen.
Bilen rullar idag med signalerna spolade rakt igenom arduino-koden och jag har gjort en första extremt enkel "traction control" där jag tar framhjulens hastighet som fordonshastighet och jämför med bakhjulens hastighet genom att beräkna hjulslip. Och när hjulslip övergår ett visst värde (här 0.3) så halvas gas signalen till nämda hjul.
Målet är att få till en gir reglering (DYC=Direct Yaw Control) genom att ha en referensmodell av bilen i koden som matas av aktuell uppmätt fordonshastighet och styrvinkel. Sedan så jämförs girvinkelhasigheten från referensmodellen med den uppmätta girvinkelhastigheten från gyrot ombord. Felet mellan värdera styr sen hur stort differentiellt drivmoment som läggs över bakhjulen. Dvs genom att bromsa ett hjul och driva med det andra för att effektivt få ett girmoment på bilen.
/Johannes
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Radiostyrd bil med anti sladd (arduino)
Spännande, kommer följas starkt!
Vad för typ av reglering och observatör för du till detta? PID/LQ/MPC? State observer/Kalman observer/Complementary observer?
Kan tänka mig att en Kalman observatör med en bra MPC skulle göra ett grymt jobb i detta fall.

Vad för typ av reglering och observatör för du till detta? PID/LQ/MPC? State observer/Kalman observer/Complementary observer?
Kan tänka mig att en Kalman observatör med en bra MPC skulle göra ett grymt jobb i detta fall.

Re: Radiostyrd bil med anti sladd (arduino)
Min först tänka approach är väl egentligen MPC skulle man kunna säga.
Vad det gäller tillståndsestimeringen så har ja tänkt att börja enkelt och i alla fall försöka mig på någon kalmanfiltrering för att bestämma bilens sidohastighet. Bilens längshastighet är ju väldigt enkelt att räkna ut då framhjulen är varken bromsande eller drivande vilket då kan ge mig en korrekt fordonshastighet.
Och själva regleringen blir nog en PI till att börja med för att se vad som händer...
Vad det gäller tillståndsestimeringen så har ja tänkt att börja enkelt och i alla fall försöka mig på någon kalmanfiltrering för att bestämma bilens sidohastighet. Bilens längshastighet är ju väldigt enkelt att räkna ut då framhjulen är varken bromsande eller drivande vilket då kan ge mig en korrekt fordonshastighet.
Och själva regleringen blir nog en PI till att börja med för att se vad som händer...

Re: Radiostyrd bil med anti sladd (arduino)
Om analoga ingångar är ett problem kan du alltid läsa acc/gyra via I2C och även en 20x4 lcd utan att det kostar pinnar
-
- Inlägg: 280
- Blev medlem: 21 oktober 2011, 17:18:41
- Ort: Krabbledes kring dig. *snap* *snap*
Re: Radiostyrd bil med anti sladd (arduino)
>> Min först tänka approach är väl egentligen MPC skulle man kunna säga.
Mycket intressant!
Hur har du planerat programmera den? Det känns inte direkt som att en Arduino kommer orka driva en sådan. Har du tänkt uppgradera MCU för det?
Mycket intressant!

Hur har du planerat programmera den? Det känns inte direkt som att en Arduino kommer orka driva en sådan. Har du tänkt uppgradera MCU för det?
Re: Radiostyrd bil med anti sladd (arduino)
Ett tillräckligt snabbt kalmanfilter med fler än säg 4-5 tillstånd (ge å ta) lär bli jobbigt att implementera på uCn. MPC, är inte den algorithmen än värre i tidskomplexitet än kf?Korken skrev:Spännande, kommer följas starkt!![]()
Vad för typ av reglering och observatör för du till detta? PID/LQ/MPC? State observer/Kalman observer/Complementary observer?
Kan tänka mig att en Kalman observatör med en bra MPC skulle göra ett grymt jobb i detta fall.
Re: Radiostyrd bil med anti sladd (arduino)
>> Ett tillräckligt snabbt kalmanfilter med fler än säg 4-5 tillstånd (ge å ta) lär bli jobbigt att implementera på uCn.
>> MPC, är inte den algorithmen än värre i tidskomplexitet än kf?
Precis, tyvärr är den mycket tung. Jag testade att implementera en med 7 sample control/prediction i en STM32F4 och de va på gränsen.
Då exekveringstiden ökar som O^3. Detta fall skulle jag nästan använda någon förenklad form av KF som typ square root implemenationen.
>> MPC, är inte den algorithmen än värre i tidskomplexitet än kf?
Precis, tyvärr är den mycket tung. Jag testade att implementera en med 7 sample control/prediction i en STM32F4 och de va på gränsen.
Då exekveringstiden ökar som O^3. Detta fall skulle jag nästan använda någon förenklad form av KF som typ square root implemenationen.
Re: Radiostyrd bil med anti sladd (arduino)
Efter att ha lekt lite med programmeringen nu så är jag faktiskt riktigt imponerad av arduinon...
Men lite slipreglering och signalhantering så går ändå kontrollen med ca 1000hz. Och det är samtidigt då jag skriver tillbaka seriellt till datorn.
Jag behöver ju också bara egentligen estimera två tillstånd. Och det är girvinkel och sidohastighet, eftersom jag har framhjulen som bra referens för bilens längshastighet. Och när när dess hastighet är tillräckligt låg så kan jag kalibrera sensorerna för avdrift m.m.
Har nu beställt en "sd-shield" så att jag kan logga lite och förhoppningsvis se hur bra jobb min reglering faktiskt gör.
Men lite slipreglering och signalhantering så går ändå kontrollen med ca 1000hz. Och det är samtidigt då jag skriver tillbaka seriellt till datorn.
Jag behöver ju också bara egentligen estimera två tillstånd. Och det är girvinkel och sidohastighet, eftersom jag har framhjulen som bra referens för bilens längshastighet. Och när när dess hastighet är tillräckligt låg så kan jag kalibrera sensorerna för avdrift m.m.
Har nu beställt en "sd-shield" så att jag kan logga lite och förhoppningsvis se hur bra jobb min reglering faktiskt gör.
Re: Radiostyrd bil med anti sladd (arduino)
Fick hem sd-prylarna nu och har placerat denna mellan arduinon och motorkortet. Dock så vill sd-shielden använda pinne 13,12,11 och 8 vilka också används av motorkortet så jag har dragit om dessa genom att börja undan de aktuella benen på motorkortet och kopplat in dessa med på lediga pinnar på sd-shielden. Återstår att se om jag lyckas få alla grejer att prata med varandra också. 
