N-spoor – deel 26 – Loc-besturing met ESP32

Nadat bleek dat het niet zo makkelijk was om Bluetooth aan de praat te krijgen leek het me een goed idee om te bekijken of de ESP met WiFi zich anders gedraagt dan de eerder geprobeerde Wemos. Sowieso is de ESP een stuk kleiner en dus een betere kandidaat, maar de PWM-functie voor de ESP heeft de mogelijkheid om de frequentie in te stellen. In het stuk over PWM had ik al geconstateerd dat daarmee een verbetering van de rijeigenschappen van de loc’s te bewerkstelligen is.
De gevonden motordriver A4950 (zie hier) is ook qua afmetingen een goede vervanger van de eerder gebruikte L9110. Om de 12V van de rails om te vormen naar 3V voor de ESP blijf ik vooralsnog gebruik maken van de eerder ingezette Mini360 DC-DC Buck Converters. Het schema blijft verder ongewijzigd.

Uitgangsschema.
De diverse modules in schema gezet.

In principe komt het neer op bovenstaande schema. Wat (in potlood) is toegevoegd is een supercap van 5,2V 1F. De idee is dat de supercondensator werkt als een buffer die de spanningsdips, die in de praktijk op de spoorbaan optreden, opvangt. Of dat werkt is nog even de vraag. Wat ook een vraag is, is hoe deze supercap ingepast moet worden. Ik heb gezocht naar praktische schema’s, maar alleen theoretisch verhandelingen gevonden. Iets wat mij zorgen baart is nl. de mogelijk erg hoge laadstroom die ontstaat bij aansluiting van de schakeling terwijl de condensator nog niet opgeladen, c.q. ontladen is. Ik zie voorbeelden waar een weerstand (10Watt) ingezet zijn (zoals in mijn schema hierboven), maar ook voorbeelden met (schottky)diodes.

// the number of the motor pin
const int motorPin1 = 9;  // motor aansluiting 1
const int motorPin2 = 8;  // motor aansluiting 2

// setting PWM properties
const int freq = 200;          // was 4000
const int ledChannel1 = 1;       // was 0; er zijn 16 channels: 0 - 15
const int ledChannel2 = 4;       // was 0; er zijn 16 channels: 0 - 15
const int resolution = 8;       // was 8: waarde 0 - 255; van 1 tot 16 bits
 
void setup(){
  // configure motor PWM functionalitites
  ledcSetup(ledChannel1, freq, resolution);
  ledcSetup(ledChannel2, freq, resolution);
  
  // attach the channel to the GPIO to be controlled
  ledcAttachPin(motorPin1, ledChannel1);
  ledcAttachPin(motorPin2, ledChannel2);  

  //pinMode(motorPin2, OUTPUT);
  Serial.begin(115200);
  Serial.println("ESP_C3_MotorControl_test_2.ino");
}
 
void loop(){
  // increase motor speed
  Serial.println("Motorsnelheid regeling - test");
  
  stoppen();
  vooruit_optrekken();
  vooruit();
  delay (2000);
  vooruit_afremmen();
  stoppen();
  delay (2000);
  achteruit_optrekken();
  achteruit();
  delay (2000);
  achteruit_afremmen();


delay(1000);
  Serial.println("");
}

Bovenstaand het testprogramma: het verwijst naar een aantal functies voor de aansturing van de motor.

PWM-signaal op de scoop.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie gegevens worden verwerkt.