All about Robot Cars - part 1

De komende vier weken willen we kleine elektrische voertuigen vanuit alle hoeken in onze blog onder de aandacht brengen als hoofdonderwerp. U zult versteld staan ​​hoeveel mogelijke combinaties er zijn om deze kleine zogenaamde robotauto's uit te rusten. We beginnen met de basisuitrusting, waarbij u kunt kiezen tussen de tweewielenset met steunwiel en de vierwielenset. De kleine gelijkstroommotoren zijn van bijna alle leveranciers hetzelfde, maar het volledige assortiment microcontrollers van Raspberry Pis tot AVR (Arduino-compatibel) en Espressif met verschillende sterktes en zwaktes is beschikbaar.

Voor de eerste test kunt u de commando's voorprogrammeren zoals met de Lego ® Boost. Maar dat wordt snel saai. Een afstandsbediening is nodig. Bij de Raspberry Pi gebruik je een draadloos toetsenbord op de usb poort. De WLAN-enabled MCU's kunnen worden bestuurd door een controller in het netwerk, bijvoorbeeld de smartphone, zelfs met Blynk. Aan het einde van zijn MQTT-blogserie zal Jörn Weise een eenvoudige rolrobot besturen via zijn Raspberry Pi-makelaar. En we zullen u laten zien hoe u een radiografische afstandsbediening kunt bouwen en programmeren met een microcontrollerbord met ATmega328P, ATmega16U2, compatibel met Arduino UNO R3.

Ten slotte willen we de grote rolmodellen nabootsen en onze robotauto leren autonoom te rijden. Met de afstandssensoren kunnen we een noodstop programmeren of obstakels vermijden. Met de IR-sensoren kunnen we een lijn volgen of heel precies in kleine stapjes rijden, bijvoorbeeld om achteruit inparkeren.

Laten we beginnen met de eerste beslissingen:

Allereerst heb je een chassis nodig met 2 of 4 wielen / elektromotoren. Op dit moment hebben we de kits niet terug in ons assortiment; daarom verwijzen we hier naar Amazon.

Voor- en nadelen van de tweewieler met steunwiel: Zeer mobiel, kan ter plaatse draaien. Maar door het (laten we zeggen, goedkope) ontwerp van de motoren of kleine oneffenheden op de grond, is rechtlijnige stabiliteit moeilijk.

 

 

Voor- en nadelen van de vierwieler: betere rechtlijnige stabiliteit, een haakmotor wordt ingedrukt, meer ruimte voor MC en accu's. Maar lineaire stabiliteit wordt gekocht met grote boogstralen. En vier motoren hebben ook twee keer zoveel sap uit de batterijen nodig.

 

 

Met het sleutelwoord batterijen staan ​​we aan de stroomvoorziening van onze robotauto's. Zoals u op de afbeeldingen kunt zien, bevatten de sets een houder voor 4 Mignon-batterijen / oplaadbare batterijen. Dat is misschien genoeg voor de eerste pogingen; Je bereikt je grenzen echter heel snel. De Mignon-batterijen leveren slechts 1,2 tot 1,25 V per cel, bijna te weinig voor onze microcontroller. En de motoren, verreweg de grotere verbruikers van elektriciteit, houden van een beetje meer "oomph". Een houder voor 6 mignonbatterijen is beter. Het is ook raadzaam om een ​​aparte voeding voor de motoren en microcontroller te hebben, omdat een motor die korte tijd vastloopt, de MCU snel opnieuw kan opstarten.

De meeste lezers zullen het weten. dat de microcontrollers de motoren niet rechtstreeks van stroom kunnen voorzien en dat het motortoerental wordt geregeld via pulsbreedtemodulatie (PWM). We hebben dus een motorcontroller nodig die, aangestuurd door de MCU met PWM, de externe stroomtoevoer naar de motoren stuurt. In het eenvoudigste geval kan dit een IC-module zijn met de naam L293D. Schilden of HAT's met een of twee van deze chips, die rechtstreeks op de betreffende microcontroller worden aangesloten, worden echter aanbevolen. In een blog leggen we uitgebreid uit hoe deze chip, een zogenaamde H-bridge, werkt.

Vervolgens moeten we beslissen welke microcomputer of microcontroller we moeten kiezen. Ook hier kleven voor- en nadelen aan de verschillende oplossingen.

Als je veel rekenkracht nodig hebt, gebruik dan een microcomputer, bijvoorbeeld uit de Raspberry Pi-familie: Raspberry Pi 3B, 3B +, 3A +, 4B of Zero WH worden aanbevolen. Voordelen: Grootste rekenkracht, WLAN, Bluetooth, toetsenbordbediening, veel sensoren, camera (!), PWM voor servomotoren. Python wordt gebruikt als programmeertaal met de zeer krachtige programmamodule gpiozero. Een goedkope motorcontroller is de MotoZero van ThePiHut in pHAT (Pi Zero) -formaat voor vier motoren. En er zijn andere motorcontrollers gebaseerd op de L293D. De nadelen moeten echter niet worden verborgen: de RasPi's hebben ongeveer 1 minuut nodig om op te starten vanaf de µSD-kaart en willen exact 5,0 tot 5,1 volt zonder onderbreking.

Het minst gevoelig voor de stroomvoorziening zijn de Arduino-compatibele microcontrollers met de Atmel-processors, bijvoorbeeld ons microcontrollerbord met ATmega328P, ATmega16U2, compatibel met Arduino UNO R3, waarvoor een geschikt motor-driver-shield is. Deze combinatie biedt nog meer aansluitmogelijkheden voor sensoren, de schets wordt opgesteld in de Arduino IDE en onze robotauto is direct na het inschakelen klaar voor gebruik. Door het ontbreken van WLAN-mogelijkheid kunnen we deze verder robuuste en beginnersvriendelijke variant echter niet besturen. Maar een remedie hier is een radiografische afstandsbediening met 433 MHz of 2,4 GHz.

De MCU's van Espressif brengen standaard wifi met zich mee: ongeacht of het ESP8266-12F of ESP32 is, de mini's zijn ook geschikt voor onze Robot Car. Maar ook hier moet, net als bij de RasPis, een DC-DC-converter worden gebruikt voor een stabiele stroomvoorziening. Omdat bijv. Twee 18650 LiPo-batterijen 7,4 tot 8,4 V leveren, 6 Mignon-batterijen ongeveer 7,2 tot 7,5 V, te veel voor onze microcontrollers, zelfs als ze gedeeltelijk ingebouwde spanningsregelaars hebben. (Deze zijn meestal voor de interne 3.3V).

Wat hebben we nog nodig? Als de kabels voor de voeding van de motoren nog niet gesoldeerd zijn, hebben we een soldeerbout nodig. Anders worden alle verbindingen geschroefd of afgesloten met startkabels. Voor het bevestigen van het batterijcompartiment en afzonderlijke componenten raad ik dubbelzijdig plakband en zelfklevend klittenband of kabelbinders aan.

 

In deze algemene inleiding wil ik de basiskennis over DC-motoren en pulsbreedtemodulatie opfrissen.

Gelijkstroommotoren hebben twee aansluitingen voor plus en min. De polariteit bepaalt de draairichting van de motor. De polariteitsomkering werkt dan met de bovengenoemde H-brug. Ten eerste is hier het functionele principe van de DC-motor:

 

Afbeelding van Kampert / Scherbeck: elektronica begrijpen met Raspberry Pi

Op de linkerfoto zijn de tegenoverliggende polen te zien, die de rotor door de Lorentzkracht in horizontale positie brengen. De middelste foto toont deze horizontale positie, waarin de stroom wordt onderbroken, maar de rotor blijft bewegen vanwege de traagheid. Kort daarna raken de wissers de andere contacten van de commutator (rechter foto). De polariteit van het magnetische veld van de rotor is omgekeerd en dezelfde polen stoten elkaar nu af. De rotatie gaat door.

Als voorbeeld laat ik het L293D motor driver shield voor Arduino Uno en compatibele microcontrollers zien, waarop maximaal 4 motoren kunnen worden aangesloten op de schroefverbindingen. Als de draairichting niet overeenkomt, verander dan gewoon de polariteit van de betreffende motoraansluiting. De schroefverbindingen voor de externe voeding bevinden zich links onderaan op de foto. U hoeft zich geen zorgen te maken over de aansluitingen op de microcontroller - sluit hem gewoon aan en lees de aansluittoewijzing van de motoren voor de schets in het gegevensblad. Ook de optionele aansluiting van twee servomotoren linksboven is duidelijk zichtbaar.

 

 

Alle motorbesturingskaarten met de L293D zijn geschikt voor PWM. Deze elektronische H-bruggen kunnen niet alleen de draairichting veranderen, maar ook de snelheid van de motoren regelen.

PWM staat voor pulsbreedtemodulatie in het Duits en pulsbreedtemodulatie in het Engels (PDM staat ook synoniem voor pulsduurmodulatie) en dit betekent dat we in plaats van een constante gelijkspanning pulsen uitzenden, d.w.z. altijd de stroom in- en uitschakelen. Dit gaat echter zo snel dat we het niet zien. Zoals in de bioscoop of op tv, waar 24 of 25 frames / seconde een film voor onze ogen maken. Hoe vaak in een seconde wordt in- en uitgeschakeld (de frequentie, "snelheid" of "frequentie") is een van de parameters van onze PWM. Hier kunnen we de respectievelijke presets gebruiken.

Het tweede kenmerk is de verhouding tussen de pulsduur en de totale duur van een cyclus, bestaande uit puls + pauze. Dit kenmerk wordt de "duty cycle" genoemd.

 

 

Wat betekent dit voor onze DC motoren? U krijgt de volledige spanning met de puls, terwijl de stroom alleen proportioneel stroomt volgens de sondegraad. Dit betekent dat er minder elektrische energie aan de motor wordt geleverd.

De programmering is vrij eenvoudig: we gebruiken de functie analogWrite(), met de syntaxis analoogSchrijven (pin, waarde)waarbij pin het pinnummer is zonder het eerst als uitvoer te definiëren, en waarde een geheel getal is tussen 0 en 255 (bij 8 bit PWM), d.w.z. e.B. 25% is gelijk aan 63.

Na het aanroepen van analogWrite() genereert de functie een continue vierkante golf met een opgegeven cyclus totdat de volgende aanroep naar analogWrite() (of digitalRead() of digitalWrite()) op dezelfde pin plaatsvindt.

Zie voor meer informatie de referentiepagina van arduino.cc,
https://www.arduino.cc/reference/de/language/functions/analog-io/analogwrite/
waarbij ik de volgende voorbeeldcode heb gekopieerd, wat vooral interessant is omdat de analoge invoergrootte een resolutie van 10 bits heeft (max. 1023), terwijl de uitvoerwaarde max. 255 kan zijn.

De code stelt de uitgang op de LED-pin 9 proportioneel (factor 4) in op de waarde die wordt gelezen door een potentiometer op A3. De LED vertegenwoordigt onze motor.

int ledPin = 9; LED naar digitale pin 9 connectedint analogPin = 3; Potentiometer op pin 3 connectedint val = 0; Variabele om de leeswaarde void setup() - pinMode(ledPin, OUTPUT) op te slaan; // Hiermee stelt u de pin in als uitvoer.

 

Het geheel is bijna net zo eenvoudig in de Programmeertaal Python op de Raspberry Pi, tenminste als je de gpiozero-module gebruikt. Dit wordt getoond in een latere blogpost.

 

Ik hoop dat ik je nieuwsgierigheid heb gewekt en dat je ons de komende weken zult volgen, wanneer het bloggerteam verschillende prioriteiten zal laten zien in de controle en regulering van robotauto's.

 

 

3 Kommentare

Guido Jensen

Guido Jensen

Cooles Project, werds jetzt doch mal probieren.

UND…ist das DER Walter Goegebeur :-)) ?

Guido

Volkert Braren

Volkert Braren

Vernünftig funktionierende Stützrollen hab ich noch nicht gefunden. An Teppichen und kleinen Stufen bleiben die gern hängen. Stattdessen setze ich ein Servo mit kleiner Möbelrolle ein. Steuerung mit der Motorsteuerung synchronisiert.
Geradeauslauf verbessern mit Tachorädern an den Motorachsen.
Grüße, Volkert

Walter Goegebeur

Walter Goegebeur

Darauf freue ich mich sehr. Es ist super das Sie sich um aktuelle Themen kümmern und uns mit Denkanstöße fördern und das für günstige Preise. Vielen Dank.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi