RS485 naar TTL-RS232 module

Op de RS485 module staat aan de ene kant DI De RE RO en aan de andere kant Vcc B A Gnd. De verbinding met de Arduino is:

DI -> TX
DE -> pin 3
RE -> pin 4
RO -> RX

H-brug

H-brug schakeling met L293.

Een H-brug is een schakeling die een stroom kan leveren die omkeerbaar is. Een typisch voorbeeld van zo'n schakeling is de L293D. Dit IC is een dubbele H-brug, en kan bijgevolg twee DC-motoren schakelen. In bovenstaande afbeelding zien we de toepassing met 1 DC motor.


De twee H-bruggen zitten netjes verdeeld over de beide zijden van het IC. Pin 1 is de enable voor de eerste H-brug, terwijl pin 9 hetzelfde doet voor de tweede.

Voor de eerste H-brug worden als ingangen pinnen 2 en 7 gebruikt. Die functie zit bij de tweede brug op pinnen 10 en 15.

De uitgangen (waarop de motor wordt aangesloten) zijn pin 3 en 6 voor motor 1 en 11 en 14 voor motor 2.

 

 

Servosturing

Een servo wordt aangestuurd met een PWM (pulse width modulation = pulsbreedtemodulatie) signaal. De vereisten voor dit signaal zijn: frequentie tussen 20 en 50Hz, en pulsbreedte van 1ms tot 2ms.

Dit betekent dat een servo constant voorzien moet worden van deze signalen om te blijven werken. Wanneer deze pulsen niet meer gestuurd worden zal men de as met de hand kunnen verdraaien.

Een standaard servomotor zoals we deze gebruiken in het labo is een positiemotor. Afhankelijk van de pulsbreedte zal de as een positie innemen die kan lopen over een bereik van ongeveer 180°.

Om met de Arduino een servo aan te sturen maken we ook hier gebruik van een bibliotheek: Servo.

Deze bibliotheek kent volgende functies:

In een basisprogramma zoals het sweep-voorbeeld wordt de servo over zijn volledig bereik heen en weer gestuurd. We bekijken even de code:

#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
  myservo.attach(9);
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) {
    myservo.write(pos);
    delay(15);
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    myservo.write(pos);
    delay(15);
  }
}
De code begint met het toevoegen van de bibliotheek. Daarna wordt een Servo object geïnstantieerd met als naam myservo.
In de setup wordt dit object gekoppeld aan pin 9. We veronderstellen dus dat de datalijn van de servo met pin 9 wordt verbonden.
Vervolgens bestaat het hoofdprogramma uit twee lussen. In een eerste lus gaat een variabele pos van 0 naar 180, en wordt via myservo.write(pos) deze waarde als een PWM-signaal op pin 9 aangeboden.
De delay van 15 milliseconden is nodig om er voor te zorgen dat de pulsen niet te snel na elkaar gestuurd worden. Een volledige sweep van 0° naar 180° zal dus ongeveer 180*15ms = 2,7s duren.
Daarna gebeurt hetzelfde, maar in omgekeerde richting in de tweede lus, waardoor de as terugkeert van de 180° positie naar de 0° positie.
Merk op dat men ook kan gebruik maken van de writeMicroseconds() functie. Bij deze functie geeft men de breedte van de gewenste puls aan in microseconden. Zo zal de waarde 1000 overeenkomen met de 0° positie en 2000 met de 180° positie.