Sida 1 av 3
Arduino stegmotor
Postat: 7 juli 2013, 17:37:08
av slatten
Hej försöker lära mig lite om programering och stegmotorer.
Kör en Arduino uno R3
Det värde(position) som stegmotorn har vid avstängning kan jag
spara det värdet någonstans för att sedan återkalla vid uppstart?
Slatten
Re: Arduino stegmotor
Postat: 7 juli 2013, 17:39:27
av Klas-Kenny
Absolut, läs på lite om EEPROM.
Re: Arduino stegmotor
Postat: 7 juli 2013, 17:44:43
av slatten
Tack Klas-Kenny för ett snabbt och informativt svar.
Då har jag följande lösning på min fråga, läser på och lär mig c eller c++.
Som steg två åker till bibban och lånar en tjock jävla bok helst på engelska
om EPROM är jag på rätt väg? Fan att jag inte kom på det själv.
Re: Arduino stegmotor
Postat: 7 juli 2013, 17:54:23
av Klas-Kenny
Att låna en tjock bok om EEPROM är att överdriva.
Om du bara vill spara ett par värden i en mikrokontroller, behövs inte mycket kunskap om EEPROM i sig. I princip det enda man behöver veta är att EEPROM inte förlorar data vid strömlöshet, och sen hur man skriver data till det i mikrokontrollern i fråga.
På just Arduino finns det som till allt annat, färdiga bibliotek för hela uppgiften.
http://arduino.cc/en/Reference/EEPROM
Re: Arduino stegmotor
Postat: 7 juli 2013, 18:00:08
av slatten
Jo jag hittade just den länken, men det som förvånade mig mest var att Eprom har en mycket begränsad
skrivbarhet.
Citerar:An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it.
Om jag nu bygger en räknare i mainloppen måste jag ju skriva efter varje steg till Epromet vet ju inte när tex ett
strömavbrott kommer och controllern tappar sitt positionsvärde.
Re: Arduino stegmotor
Postat: 7 juli 2013, 18:05:31
av svanted
sätt en konding som driver arduinon ngn halvsekund så att du hinner skriva stegmotorvärdet innan den blir kraftklös.,
edit...menar kratfslös, krastflös.... äh...

Re: Arduino stegmotor
Postat: 7 juli 2013, 18:11:46
av slatten
svanted ja men om jag just flyttat stegmotorn så kanske skrivningen till epromet inte hinns med, då måste
jag ju känna av när matningsspänningen faller och skriva för att sedan inte ge mer stegkommandon.
Och 100.000 Steg till en motor e ju ganska snabbt avklarat, så om jag fattar det rätt kan man ta en IO pinne
och känna av inmatningsspänningen och om den faller under ett visst värde så skrivs det till Eprom?
Mitt problem är att jag vill styra en ventil med stegmotorn och ventilen har ju två dödlägen fullt stängd och
fullt öppen. Kan man läsa av när stegmotorn når ventilens stängda läge? Ström/spänning, så är ju problemet löst.
Dvs vid varje start av Arduinon stegar man sakta ned stegmotorn och när den når stängt läge borde ju ström/spänning
förändras och man har sitt 0 läge för stängd ventil fullt öppen är ju redan känt
Re: Arduino stegmotor
Postat: 7 juli 2013, 18:31:27
av Icecap
Inget skrivs till EEPROM'et om det inte sker från programmet!
Om du ska stega motorn 100k steg ska du SÅKLART inte spara positionen för varje steg!
Sedan är det bara en önskedröm att spara det, det behöver inte ha något med verkligheten att göra. Motorn kan flyttas manuellt, det kan vara ett stopp den inte kommer förbi eller liknande och ingen återmatning finns på det!
Alltså kommer värden man sparar att vara "förhoppningsvis" värden.
Re: Arduino stegmotor
Postat: 7 juli 2013, 23:15:18
av swapper
Mina förslag är nog
1. Sätt ett ändläge där ventilen är fullt stängd eller fullt öppen.
Vid uppstart så kör enheten alltid mot ändläget och blir nollad där.
2. Absolutencoder med batteribackup som alltid vet var den är i ett antal dagar. (dyrt)
Här verkar vara ett liknande projekt.
http://thingsimdoing.wordpress.com/2012 ... g-arduino/
De använder encoder, dock troligen inte batteribackad.
Re: Arduino stegmotor
Postat: 7 juli 2013, 23:31:15
av slatten
Encoder vill helst slippa det, vill göra det enkelt. Men batteribackupp och en pinne på Arduinon som känner av
om matningen försvinner och sedan sparar stegposition och stänger av. Men som jag sa tidigare borde man inte kunna
känna av stoppläget vid stängd ventil?
Re: Arduino stegmotor
Postat: 8 juli 2013, 04:39:53
av Maalobs
På PC-moderkort och på routers/switchar brukar man spara viss typ av konfiguration i NVRAM, som hålls igång av klockbatteri.
Exempelvis BIOS-inställningar på datorer och Configuration Register på Cisco-prylar.
Det är RAM, så det finns ingen begränsning i antal read/write-cycles som på EEPROM, så det kanske är ett praktiskt alternativ i ditt tänkta fall där du vill spara varenda utförd positionsändring?
Det verkar finnas lite färdigt därute:
http://www.google.se/#q="nvram"+arduino
Hur du ska garantera att stegmotorns verkliga position i alla lägen överensstämmer med det sparade värdet, är en annan femma.

Re: Arduino stegmotor
Postat: 8 juli 2013, 05:47:13
av SeniorLemuren
Förslag 1 från swapper är ju den enklaste lösningen och väldigt vanlig.. Sätt en liten mikrobrytare i ena ändläget t.ex vid stängd ventil. När du startar upp datorn så har du en rutin som först kör stegmotorn mot mikrobrytaren och nollställer räknaren, innan du fortsätter i programmet.
Bilden visar regulator som jag byggde till min braskamin, där jag använder en mikrobrytare som nollställer stegmotorn vid stängt spjäll.
regulator.JPG
Re: Arduino stegmotor
Postat: 8 juli 2013, 07:29:14
av slatten
SeniorLemuren jo funderat mycket på mikrobrytare, det vore iof en lösning. Ser dock lite problem
med just den. Nålventilen jag ska styra har mindre än 0,5mm gängstigning. Så det blir svårt att justera den
exakt och min erfarenhet av mikrobrytare är att dom flyttar på sig ibland och har en begränsad mekanisk
livslängd. Funderar på att åka bort och låna ett oscilloskop för att se vad som händer när jag stegar ner mot
stängd ventil. Och kanske utnyttja den effekten för att nollställa stegräknaren. Men har för liten erfarenhet och jag kanske tänker fel?
Re: Arduino stegmotor
Postat: 8 juli 2013, 08:43:01
av SeniorLemuren
Du kan ju alltid välja en induktiv givare med bra repeterbar noggrannhet i stället för en mikrobrytare.
Re: Arduino stegmotor
Postat: 8 juli 2013, 08:57:53
av Icecap
Rätt monterat är mikrobrytare ett utmärkt alternativ men det finns andra sätt också.
Det man ska ha klart för sig är att man inte måste ha mikrobrytaren exakt på nollpunkten, iaf. inte om man har en stegmotor. Det går alldeles utmärkt att man kan kalibrera så att styrningen kan "resonera": "Nu kom skiftet, jag stegar åt rätt håll, alltså är det xx steg kvar innan stopp".
Om man då ska återställa till start är det bara att räkna hur många steg som det stegas ner, när nollpunkten nås stegar man upp samma antal steg och den är återställd och har känd position.
Ska det vara än mer noga kan man ha en liten skiva på stegmotorns axel som man kombinerar med ändlägesbrytaren: Först ska ändläget aktiveras och när indikatorn på skivan sedan aktiveras är det ett definitivt känd punkt med hög upplösning.