Dat klopt maar dan ziet 't er ook perfect uit - 't zijn de locs die 't eindresultaat verzieken... Zolang ik de regelaar maar belast met een weerstandje of een lampje gaat alles goed - pas als ik er een motortje aan hang beginnen de problemen. Ook met slot car motoren loopt 't redelijk maar die motoren zijn allemaal 't zelfde. En nogmaals, sommige locs lopen perfect, maar anderen...
Het origineel van 1966 had een schakelaar - vandaar. Met een schakelaar ligt de snelheid vast, belangrijk bij een wedstrijdje.
Die vormen een lichtsluis zodat ik de maximale snelheid in km/h kan instellen.
Volgens de documentatie is 9 volt voor een Arduino Uno perfect.
Wel zou je nog eens kunnen meten met aan beide motor uitgangen een weerstand naar de GND. Iets van 1k doet het altijd goed En dan geen loc op de rail. Heb je nu wel het gewenste PWM signaal (0% - 100%)? Of nog makkelijker, bij DI1 en DI2 meten...En maak je in de code echt gebruik van hardware PWM? (Dus doormiddel van analogWrite()?)
Okay, hier mis je mij even, wedstrijdje?
Kan ook prima, maar tot 20V kan ook prima. Hoeveel volt gebruik je voor het aansturen van de loc's?
En nee - ik maak gebruik van een software library om zowel de PBM frequentie als de duty cycle in te stellen.
unsigned int speed;unsigned int speedLastKick;unsigned int speedState //0= normale speeds, 1 = soft PWM "kick"doSpeed(){ unsigned int millisNow; if(speed == 0){ analogWrite(PwmPort, 0); } else{ millisNow = millis(); if(speedstate == 0){ if(millisNow - speedLastKick >= 19){ //time for a kick analogWrite(PwmPort, 255); speedState = 1; } else{ //just the speed analogWrite(PwmPort, speed); } } else{ //we are giving a kick if(millisNow - speedLastKick >= 20){ //time to end the kick analogWrite(PwmPort, speed); speedLastKick = millisNow(); speedState = 0; } } }}
/****************************************************************************/#include <Wire.h> // display libraries#include "Adafruit_LEDBackpack.h"#include "Adafruit_GFX.h"#include "PWM.h" // PWM libraryAdafruit_7segment display = Adafruit_7segment();#define port1 9 // Dl1 TA8050 H-bridge#define port2 10 // Dl2 TA6050 H-bridgeint value; int cycle;bool left = false;bool right = false;int32_t frequency = 0; // PWM frequency in Hz/****************************************************************************/void setup() { delay(2000); frequency = ((analogRead(1)) + 1); InitTimersSafe(); bool success = SetPinFrequencySafe(port1, frequency); if (success) { // set UNO LED pinMode(13, OUTPUT); digitalWrite(13, HIGH); } pinMode(port1, OUTPUT); pinMode(port2, OUTPUT); pwmWrite(port1, 0); pwmWrite(port2, 0); display.begin(0x70); // set display display.setBrightness(7); // 0..15 display.println(frequency); // frequency to display display.writeDisplay(); delay(2000); } // end setup/****************************************************************************/void loop() { // main loop value = analogRead(0) / 2; // 0...511 cycle = 0; // 0..245 = left, 246..266 = deadband, 267..511 = right if (value < 246) left = true; else left = false; if (value > 266) right = true; else right = false; if (left) { // write value to PWM port1. cycle = 255 - value; // cycle between 10..255 pwmWrite(port2, 0); pwmWrite(port1, cycle); } if (right) { // write value to PWM port2. cycle = value - 256; // cycle between 10..255 pwmWrite(port1, 0); pwmWrite(port2, cycle); } if (!left && !right) { pwmWrite(port1, 0); pwmWrite(port2, 0); } display.println((cycle * 100) / 255); // duty cycle % to display display.writeDisplay(); } // end loop/****************************************************************************/
Wat verder opvalt is het snelheidsverschil tussen voor en achteruit rijden. Loopt soms op tot wel 5 km/h – bij 20 km/h maximum…
Ook valt op dat bij oudere locs (bv. Athearn) de maximum snelheid veel hoger is waardoor het effectieve regelgebied nog veel kleiner wordt.
• 50 Hz is een mooi compromis.
Hangt af van de loc, vooral hoe de aandrijving in elkaar zit. Moderne loc's hebben vaak goede symetrische aandrijving en hebben er een stuk minder last van.
Grote nadeel van 50Hz is dat het hoorbaar en zichtbaar is. Heb je LED verlichting ga je dat echt terug zien. In een LoPi 3 wordt een PWM frequentie van 16kHz gebruikt (zo uit me hoof) om je een idee van orde grote te geven. Zelf reed bij mij de loc mooi en soepel alleen had hij een beetje hulp nodig om de stilstand kleef te overwinnen.
In een LoPi 3 wordt een PWM frequentie van 16kHz gebruikt
Erger was dat het regelbereik steeds kleiner werd.
Overigens vergeten oude mensen ook wel eens dat jonge mensen 15kHz ook niet fijn vinden
Als je dus de "standaard" frequenties gebruikt zoals ik aan gaf zal je regelbereik niet kleinen worden, blijf 8-bit ofwel 0-255.