mechanische tripmaster

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: mechanische tripmaster

Berichtdoor shooter » 10 Feb 2016, 10:13

alle acties vragen tijd, zowel serial als lcd etc.
maar je hoeft alleen maar te schrijven als er iets verandert, en zelfs dan nog maar 1 keer per seconde of zo
dus timereraan en elke seconde afvragen of er iets verandert is zo ja dan lcd........,

anders niks doen.
over microsteps die zijn nutteloos in deze app, dus gewoon hele stappen gebruiken, dan blijft het wel snel gaan.
verder moet je een flanktest doen want nu draait de teller elke 150 ms een slag.
paul deelen
shooter@home.nl

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: mechanische tripmaster

Berichtdoor nicoverduin » 10 Feb 2016, 12:29

shooter schreef:over microsteps die zijn nutteloos in deze app, dus gewoon hele stappen gebruiken, dan blijft het wel snel gaan.
verder moet je een flanktest doen want nu draait de teller elke 150 ms een slag.
Maakt ie meestal wel veel meer herrie :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 35
Geregistreerd: 07 Jan 2016, 22:09
Woonplaats: Veghel

Re: mechanische tripmaster

Berichtdoor JoostB » 10 Feb 2016, 17:34

Ik kom er niet uit grrrrrrrr al weer een paar uur aan het zoeken en aan het proberen.

Ik probeer nu om alleen als mijn potmeterstand wijzigt opnieuw iets te schrijven naar mijn LCD.
Echter krijg ik elke keer bij het uploaden een foutmelding, het heeft te maken met de return previousReading ik heb al vanalles gebrobeerd maar kom niet verder.
Heeft iemand een idee wat ik verkeerd doe?

de foutmelding is:

return-statement with a value, in function returning 'void' [-fpermissive]

hier een stukje uit mijn code:

cpp code
void loop() {

int val = analogRead(A0); //lees de waarde van de potmeter op A0
val = map (val, 0 , 1023, 1995, 2005); //zet de potmerwaarde om in een andere waarde (omtrek wiel in mm)
int stappenPulsen = int(val * 0.04); //stappenPulsen is de omtrek wiel in mm * 0,04 (step/mm)


static int previousReading = 0; // static is better than a global
previousReading = val;
if ((val - 1 > previousReading) || (val + 1 < previousReading))
{

lcd.setCursor(0, 2); //zet de cursor op (karakter, rij)
lcd.print("wielomtrek="); // print ()
lcd.setCursor(11, 2); //zet de cursor op (karakter, rij)
lcd.print(val); //print (waarde)

return previousReading;
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: mechanische tripmaster

Berichtdoor nicoverduin » 10 Feb 2016, 18:17

De reden dat je een terechte compiler fout is omdat je een waarde wilt teruggeven uit de functie loop() terwijl die beschreven staat als void loop().
void = NIETS. De oorzaak ligt hem erin dat veel mensen de taalbeschrijving "ff" overslaan terwijl die in den treure is uitgelegd op o.a. de arduino site als vele andere sites.
samenvattend:
cpp code
void loop()

betekent de start van de functie loop waarbij er dus niets wordt terugggeven als deze klaar is.
In jouw code staat
cpp code
return previousReading;

Aan wie wil je die dan teruggeven?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 35
Geregistreerd: 07 Jan 2016, 22:09
Woonplaats: Veghel

Re: mechanische tripmaster

Berichtdoor JoostB » 10 Feb 2016, 20:18

nicoverduin schreef:De reden dat je een terechte compiler fout is omdat je een waarde wilt teruggeven uit de functie loop() terwijl die beschreven staat als void loop().
void = NIETS. De oorzaak ligt hem erin dat veel mensen de taalbeschrijving "ff" overslaan terwijl die in den treure is uitgelegd op o.a. de arduino site als vele andere sites.
samenvattend:
cpp code
void loop()

betekent de start van de functie loop waarbij er dus niets wordt terugggeven als deze klaar is.
In jouw code staat
cpp code
return previousReading;

Aan wie wil je die dan teruggeven?


de previousReading is de "val" dus de waarde van de analoge ingang.
ik dacht/denk dat ik hiermee schrijf:

zolang er geen verandering in de analogewaarde is ga terug naar de vorige analogewaarde.

In mijn sketche is previosReading toch een waarde waarom hij vraagt??

nog even gekeken vaar Void en er word geschreven bij de Arduino site:

void

The void keyword is used only in function declarations. It indicates that the function is expected to return no information to the function from which it was called.


Nou begrijp ik nog niet wat ik moet veranderen, misschien nog een hint??

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: mechanische tripmaster

Berichtdoor shooter » 10 Feb 2016, 22:12

cpp code
int previousReading = 0; // static is better than a global ja dat is wel zo maar nu nog even niet
int val;
float omtrek;
// hou het simpel dan lees je tenminste de fouten.

void loop() {

val = analogRead(A0); //lees de waarde van de potmeter op A0
omtrek = map (val, 0 , 1023, 1995, 2005); //zet de potmerwaarde om in een andere waarde (omtrek wiel in mm)
int stappenPulsen = int(omtrek * 0.04); //stappenPulsen is de omtrek wiel in mm * 0,04 (step/mm)


if ((val != previousReading))// betekent ongelijk dan gelijk maken en lcd een keer doen
{ previousReading = val;
updatescreen()

}

void updatescreen()
{ lcd.setCursor(0, 2); //zet de cursor op (karakter, rij)
lcd.print("wielomtrek="); // print ()
lcd.setCursor(11, 2); //zet de cursor op (karakter, rij)
lcd.print(omtrek); //print (waarde)
}


je gebruikt val 2 keer 1 maal als int en ook als float en dat gaat niet goed.
dus omtrek van gemaakt.
paul deelen
shooter@home.nl

Berichten: 35
Geregistreerd: 07 Jan 2016, 22:09
Woonplaats: Veghel

Re: mechanische tripmaster

Berichtdoor JoostB » 21 Feb 2016, 18:11

tja, ik kom er niet echt verder mee!
Programma is een heel eind gelukt nu maar ik heb een opstelling gemaakt om het één en ander te kunnen simuleren.
Ik heb mij vergist en ben stom geweest!
Het aantal pulsen wat ik van mijn wiel ga krijgen is veel meer dan ik aanvankelijk dacht.
Elke puls is een start en stop van de stappenmotor.
Ondertussen heb ik als totaalteller een kleiner telwerk gepakt omdat ik vond dat 2 van die grote telwerken te fors waren.
(zie foto's)

Als ik er vanuit ga dat een wiel een omtrek heeft van 2meter.
Als de auto dan 160km/h rijd dan is dit 160.000meter/h dit is dan 2666meter/min = 2666:2=1333omw/min
Als ik dit doe dan mis ik stappen en het geheel draait niet echt lekker!

Hoe nu verder??
Zou het een idee zijn om een gewonde DC-moter aan te gaan sturen d.m.v. een PWM signaal, zou dit een optie zijn?
Zou ik dan de tijd kunnen meten tussen 2 pulsen en deze tijd gebruiken om het toerental van de motor te kunnen regelen.
Het lijkt mij heeeel lastig om het geheel gekallibreert te krijgen.

Iemand nog suggesties?

Ik moet wel zeggen dat dit voor mij een erg leerzaam project is m.b.t. het Arduino concept! (ieder nadeel heeft zijn voordeel!)

DSC_0187 (Custom).JPG
DSC_0187 (Custom).JPG (84.83 KiB) 7922 keer bekeken


DSC_0188 (Custom).JPG
DSC_0188 (Custom).JPG (80.42 KiB) 7922 keer bekeken


DSC_0186 (Custom).JPG
DSC_0186 (Custom).JPG (107.35 KiB) 7922 keer bekeken


Gr Joost

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: mechanische tripmaster

Berichtdoor shooter » 22 Feb 2016, 10:42

denkfout!
dat asje van het wiel gaat naar een wormwiel in de kilometerteller, en wordt dan zover vertraagd met tandwielen, tot er voor 1 omwenteling 100 meter is gedaan ofwel 50:1 (bij een wiel van 2 meter.
dat is dan weer wel goed bij te houden.bij 160km/h is dat 44m/s en dat betekent dat de stappenmotor dus 0.44 omwenteling / seconde en dat is heel goed te doen.
wel leuk gemaakt trouwens.
je moet dus de pulsen die je krijgt van het wiel delen door een getal afhankelijk van de diameter zodat je 100 meter uit krijgt.
paul deelen
shooter@home.nl

Berichten: 35
Geregistreerd: 07 Jan 2016, 22:09
Woonplaats: Veghel

Re: mechanische tripmaster

Berichtdoor JoostB » 22 Feb 2016, 22:56

Hoi Shooter,

klopt helemaal wat je zegt.
Ik moet zeggen dat het door het constant starten en stoppen allemaal erg onrustig verloopt en het lijkt allemaal
niet erg regelmatig te gaan door het geklapper van de tandwielen.
Wel is het zo dat de andere stappenmotor van de kleine motor veel mooier en gelijkmatiger loopt maar deze heeft een te grote
vertraging (1/64) en kan zijn snelheid niet halen.

Misschien is het een idee om bij de grote teller een snaar aandrijving te maken zodat je in ieder geval het geklapper van de
tanden kwijt bent, misschien zelfs een kleine acceleratie/de-acceleratie erin zetten.Het blijft tenslotte toch constant aan/uit
Ook heb ik er aan gedacht de stepper rechtstreeks op de as te zetten maar dan komt de stepper boven de teller uit en dit gaat dan weer niet met de inbouw.

Moet trouwens zeggen dat de kracht die zo'n kleine stappenmotor kan leveren erg tegen valt je houd hem zo tegen met het puntje van je vinger.
(is max afgesteld op de Easy-drive met de potmeter)

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: mechanische tripmaster

Berichtdoor shooter » 23 Feb 2016, 09:34

afstellen op stroom en genoeg spanning aanbieden helpt heel goed, het motortje mag best een beetje warm worden.
verder kun je halfsteppen, en ja het is een STAPPEN motor en dus tandwielen zijn daar eigenlijk niet goed in.
alhoewel het hier wel erg lang goed zal gaan, want er zit bijna geen massa achter.
acceleratie helpt niet want dat zijn dan toch stappen. zet microstep maar eens aan, dan zul je zien dat de motor flink blijft springen.
snaar is wel goed als je een tandsnaar gebruikt met twee tandwielen. (veel plotters hebben die dingen.

lekker bezig toch.
paul deelen
shooter@home.nl

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten