Nieuws:

Wilt u Stichting 3rail steunen? Dit kan eenvoudig via onze Stichting 3rail Webshop :thumbup:

rollenbank met snelheidsmeting

Gestart door jappoe maandag 06 juli 2020, 17:08:33

0 leden en 1 gast bekijken dit board.
rollenbank met snelheidsmeting
 Op mijn baan heb ik een baanvak waarop ik met behulp van 2 lichtsluizen en een Arduino uitstekend en nauwkeurig snelheid kan meten. Als ik echter wat aan het experimenteren ben met wat CV-instellingen dan kost het nogal wat tijd om alle rijstappen te doorlopen. Nu had ik nog het plan om een rollenbank te maken en wilde maar meteen kijken of ik dan ook de snelheidsmeting daarin kon meenemen. En als ik dan toch bezig was ook maar meteen het stroomverbruik. En dat is gelukt ! De lagerblokken heb ik geprint op mijn 3D printer. Ik gebruik 6 mm kogellagers (asgat 2 mm). Ik heb 1 speciaal lagerblok met een loopwieltje dat wordt aangedreven door 1 van de lagers. In dit loopwieltje zit een gat, waardoor ik met een lichtsluisje de rotatiesnelheid kan meten. Hieruit kan ik dan de snelheid berekenen. Voor het meten van stroomsterkte heb ik een ACS712 stroomsensor gebruikt. Om het geheel zichtbaar te maken op een LCD-display gebruik ik een Arduino Uno. Het programma wat ik daarvoor geschreven heb meet gedurende 5 seconden het aantal rotaties en geeft dan de werkelijke snelheid en de schaalsnelheid weer. Voor het stroomverbruik wordt het gemiddelde gedurende 1 seconde weer gegeven. Door deze 5 en 1 seconde is de weergave wat vertraagd, maar het geeft een wat rustiger beeld. Bovendien moet bij het veranderen van een rijstap door de optrekvertraging de loc ook even de tijd hebben om op snelheid te komen. Als ik een rijstap instel en de loc even een seconde of 10 laat lopen krijg ik een perfecte en nauwkeurige weergave van de snelheid. Het stroomverbruik is een goede indicatie. Zo heb ik ook een loc ontdekt die wel erg veel stroom verbruikte.  Door te werken met Programming On Main kan ik snel de effecten van wijzigingen zien. Ik ben blij met met mijn rollenbank. Bijgevoegd wat foto's. Ik heb er ook een video van, maar heb geen Youtube account om het zichtbaar te maken.
Re: rollenbank met snelheidsmeting
Lid sinds: 2009

Dwarsliggers op de rails sporen niet

offline
Re: rollenbank met snelheidsmeting
Citaat van: jappoe op maandag 06 juli 2020, 17:08:33
Ik heb 1 speciaal lagerblok met een loopwieltje dat wordt aangedreven door 1 van de lagers. In dit loopwieltje zit een gat, waardoor ik met een lichtsluisje de rotatiesnelheid kan meten. Hieruit kan ik dan de snelheid berekenen.
Dat is een echt doortrapte methode. Dat loopwieltje heeft altijd dezelfde omtrek, dus zijn je berekeningen betrouwbaar ongeacht omtrek (wielradius) van de afzonderlijke locs.  :idea:
Re: rollenbank met snelheidsmeting
Speciale Gast
Lid sinds: 2006

'to err is human, to forgive, divine

offline
Re: rollenbank met snelheidsmeting
Ik blijf me er altijd over verbazen dat er mensen zijn die zo inventief zijn en er dan ook nog handen en voeten aan weten te geven.
Heel veel plezier er mee.

mvg
Jurrien
Re: rollenbank met snelheidsmeting
Ontzettend leuk gedaan zeg! Zoals al eerder aangeven: knap bedacht en vorm gegeven.
Tip voor de iTrain gebruikers, die zoiets van je nabouwen: de waardes die je daar meet als snelheid, zou je eenvoudig in de XML kunnen toevoegen per trein die je ijkt.

Groet,
Leendert
Re: rollenbank met snelheidsmeting
In hoeverre komen de gemeten waarden op de rollerbank overeen met wat je op de baan meet? Heb je geen last van doorslippen van sommige wielen als je met het lagertje nog een extra wiel moet aandrijven?
Re: rollenbank met snelheidsmeting
Voor locs met lastregeling komen de meetwaarden goed overeen met wat ik op de baan meet. Alleen bij de allerlaagste stappen is de rotatie snelheid zo laag dat het moeite kost om de juiste waarde te bepalen. Ik ga hiervoor nog een aanpassing doen in het programma, zodat de meetijd wat wordt aangepast aan de omloopsnelheid. Het loopwieltje heeft eigenlijk geen wrijving (is een soort glijlager). Ik heb wat moeten experimenteren met de veerdruk van het loopwieltje tegen het lager. Van slippen heb ik eigenlijk geen last
Re: rollenbank met snelheidsmeting
Ik denk dat je beter een meetwieltje gebruikt met meer dan 1 gat dan krijg je meerdere pulsen per omwenteling. Een wieltje uit een pc muis bijvoorbeeld heeft zeer veel gaatjes.
Re: rollenbank met snelheidsmeting
Speciale Gast
Lid sinds: 2006

Trans Europ Express

offline
Re: rollenbank met snelheidsmeting
Netjes uitgevoerd en goed on-a-budget, complimenten.
Jaaaaaren terug een rollenbank van KPF Zeller gekocht met dezelfde feature in een bijpassend blokje.
Zou dit ook op een Nano kunnen en is de code beschikbaar?
Re: rollenbank met snelheidsmeting
Bedankt voor de tip. Zat er zelf ook al over te denken om een nieuw loopwieltje te maken met meer openingen. Zal binnenkort wel een nieuw wieltje maken. gr Henk
Re: rollenbank met snelheidsmeting
Citaat van: Buzz_4stroke op dinsdag 07 juli 2020, 11:09:14
Zou dit ook op een Nano kunnen en is de code beschikbaar?
Inderdaad low budget. beide sensoren samen 6 euro. Meestal maak ik voor projecten die ik niet vaak nodig heb een opzetprintje met alle aansluitingen dat ik zo op de arduino kan klikken en daar het lcd scherm weer op kan klikken. Dan kan ik de arduino ook makkelijk voor andere dingen gebruiken. Zie foto's voor een voorbeeld.

Ik heb zelf geen ervaring met een Nano, maar heb even naar de pin-layout van de Nano gekeken en dat zou moeten kunnen. Omdat ik in dit geval een i2C LCD gebruik heb ik naast de 5v en de GND slechts 4 pinnen nodig: 2x analoog voor de LCD, 1x analoog voor de stroomsensor en 1x digitaal voor de lichtsluis. De code staat hieronder. Als je een ander LCD gebruikt moet je wel de library en de pindefinitie aanpassen. De code is nog wat "ruw" . Er staan nog wat testelementen in achter //.

// Sketch voor het meten van de snelheid op een modelspoor
//rollentestbank m.b.v. een lichtsluis en tevens het meten
//van het stroomverbruik. Hiervoor een ACS712 gebruikt 30A
//Tevens omrekening naar schaalsnelheid 1:87
//Versie 2.1 4 juli 2020


#include <LiquidCrystal_I2C.h>

#include <Wire.h>


LiquidCrystal_I2C lcd (0x27, 16, 2);

//parameters voor snelheidsmeting

  int sensorPin = 8;
  long startTijd;
  int meetTijd;
  int pulsen;
  int rpm;
  float snelheid;

// parameters voor stroommeting

  const int sensorIn = A0;
  int mVperAmp = 66; // 185 voor 5A module, 100 for 20A en 66 for 30A module
  double Voltage = 0;
  double VRMS = 0;
  double AmpsRMS = 0;

void setup() {
  // put your setup code here, to run once:
  lcd.init(); //LCD scherm initialiseren
  lcd.backlight(); //zet schermlicht aan
  lcd.clear(); //maak scherm leeg
  pinMode(sensorPin, INPUT);
  meetTijd = 5000; //pulsen meten gedurende 5 seconden
  pulsen = 0;
  snelheid = 0;
}

void loop() {
  // deel stroommeting

 
   Voltage = getVPP();
VRMS = (Voltage/2.0) *0.707;
AmpsRMS = ((VRMS * 1000)/mVperAmp)-0.16;
lcd.setCursor(9, 1);
lcd.print(AmpsRMS);
lcd.print(" ");
lcd.setCursor(14, 1);
lcd.print("Ah");

}

float getVPP()
{
  float result;
 
  int readValue;             //waarde lezen van sensor
  int maxValue = 0;          //hier max waarde opslaan
  int minValue = 1024;       //hier minium waarde opslaan
 
   uint32_t start_time = millis();
   while((millis()-start_time) < 1000) //sample for 1 Sec
   {
       readValue = analogRead(sensorIn);
       // see if you have a new maxValue
       if (readValue > maxValue)
       {
           /*record the maximum sensor value*/
           maxValue = readValue;
       }
       if (readValue < minValue)
       {
           /*record the maximum sensor value*/
           minValue = readValue;
       }
   }
   
   // Subtract min from max
   result = ((maxValue - minValue) * 5.0)/1024.0;


   // deel snelheidsmeting
    startTijd = millis();
 
start1:

  if (millis()- startTijd >= meetTijd) goto resultaat;// gaat na meettijd naar resultaat
  if  (digitalRead(sensorPin)>0)// tussenloop zolang sluis onderbroken is
  while (digitalRead(sensorPin)>0)
  {goto start1;}
  delay(10);// wachttijd om dubbeltelling te voorkomen bij lage rotatie snelheid en overgang naar open sluis

start2:

  if (digitalRead(sensorPin)<1)// tussenloop zolang sluis open is
  while (digitalRead(sensorPin)<1)
  {goto start2;}



  if (digitalRead(sensorPin)>0);
  {pulsen = pulsen +1;}// telt een puls als sluis weer onderbroken is
  {goto start1 ;}
 

 
  resultaat:

 
  rpm = pulsen*12;
  snelheid = rpm*40.192*60/1000000;// Is werkelijke snelheid. 40.192 is omtrek meetwiel
  //lcd.setCursor(12, 1);
  //lcd.print(pulsen);
  //lcd.print(" ");
  //lcd.print(rpm); voor testdoeleinden
  lcd.setCursor(0, 0);
  lcd.print(snelheid);// geeft werkelijke snelheid weer
  lcd.print(" ");
  lcd.setCursor(4, 0);
  lcd.print("km/u");
  lcd.setCursor(0, 1);
  lcd.print(snelheid*87, 0);// Geeft schaalsnelheid weer
  lcd.print("  ");
  lcd.setCursor(4, 1);
  lcd.print("km/u");

  pulsen = 0 ;
  startTijd = 0;

  return result;
   }


Edit Looney Tunes: code tags ingevoegd

Re: rollenbank met snelheidsmeting
Bij deze de voorbeeld foto's van een opzetprint