T: Aduino programmering
T: Aduino programmering
Nån som känner för att sätta ihop ett Arduino program åt mig? (Är kass på sånt, tyvärr)
Den ska läsa av en pulsgivare med A och B signal (för rotationsriktning)
Givaren ger 3000 ppr 5 volt
Ut ska komma ca 100ppr (inställbart), nån sorts division går alltså åt
Signalen ska gå till en stegmotor drivare som ger en förflyttning på 5/1000 mm / puls (ungefär).
Vad jag kunna lista ut går stegmotorn fram ett steg när ingången dras från hög till låg.
Riktningen bestäms av en annan ingång på drivaren (hög-låg , fram back).
Har ingen bra koll på hur knepigt det här är, kan tänka mig att divisionen kanske ställer till det.
Ersättning enligt överenskommelse (Det är ingen produkt som ska säljas)
Den ska läsa av en pulsgivare med A och B signal (för rotationsriktning)
Givaren ger 3000 ppr 5 volt
Ut ska komma ca 100ppr (inställbart), nån sorts division går alltså åt
Signalen ska gå till en stegmotor drivare som ger en förflyttning på 5/1000 mm / puls (ungefär).
Vad jag kunna lista ut går stegmotorn fram ett steg när ingången dras från hög till låg.
Riktningen bestäms av en annan ingång på drivaren (hög-låg , fram back).
Har ingen bra koll på hur knepigt det här är, kan tänka mig att divisionen kanske ställer till det.
Ersättning enligt överenskommelse (Det är ingen produkt som ska säljas)
- tecno
- Inlägg: 27009
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: T: Aduino programmering
Varför utgå ifrån 3000ppr? Vilken rotationshastighet kan det bli frågan om på pulsgivaren?
Re: T: Aduino programmering
Att göra programmet med divisionen ska väl inte vara så svårt, det svåra är avläsningen av rotationsgivaren. Om det inte finns dedikerat hårdvara som kan styra en räknare (finns t.ex. på Renesas M16C's timer) är det svårt att läsa snabbt nog om du rullar på lite snabbt.
Re: T: Aduino programmering
Såg den här videon, på nån som hade knåpat ihop det.
Det är enstaka varv på minut, så låg fart.
3000ppr var bara för att jag råkade ha sådana encodrar hemma.
Det handla om att röra axlarna på en svarv, måste kunna justera divisionen för att få tex ett varv på X att motsvara 1/2 mm
Det är enstaka varv på minut, så låg fart.
3000ppr var bara för att jag råkade ha sådana encodrar hemma.
Det handla om att röra axlarna på en svarv, måste kunna justera divisionen för att få tex ett varv på X att motsvara 1/2 mm
- tecno
- Inlägg: 27009
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: T: Aduino programmering
Hade mina aningar om att det var gamla blomman du vill få fart på. Gör livet enkelt och haka på en PC och styr svarven den vägen istället.
Mycket enklare att få till RÄTT parametrar den vägen än att hålla på och labba med koden till en Arduino.
Mycket enklare att få till RÄTT parametrar den vägen än att hålla på och labba med koden till en Arduino.
Re: T: Aduino programmering
Är det alltså två "fyrkants-signaler", A och B?
Det borde ju inte vara så svårt Måste det vara inställbart på plats eller räcker det med att man kan programmera om den och ha ett fast divisionsförhållande i programmet?
Är det bråttom? Jag skulle kunna testa att göra ett program men har lite kort om tid för tillfället.
Edit: Ser ju ut att redan finnas en länk till programmet i videons beskrivning
Det borde ju inte vara så svårt Måste det vara inställbart på plats eller räcker det med att man kan programmera om den och ha ett fast divisionsförhållande i programmet?
Är det bråttom? Jag skulle kunna testa att göra ett program men har lite kort om tid för tillfället.
Edit: Ser ju ut att redan finnas en länk till programmet i videons beskrivning
-
- Inlägg: 7771
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: T: Aduino programmering
Hur man läser av encodern visas ju exakt i programmet som du länkat till och en division är ju inget konstigt. Grejen är väl vilken typ av input du vill använda för att ändra divisorn (eller vad det heter).
Re: T: Aduino programmering
Angående divisionen...
> Givaren ger 3000 ppr...
> Ut ska komma ca 100 ppr
Om det är OK med 93.75 ppr ut så blir divisionen väldigt enkel.
3000 / 32 = 93.75.
Men annars så gör man nog inte detta med en division. Man låter
pulserna in räkna upp/ner ett register och vid vissa gränsvärden så
gör man en puls ut. Du får alltså ett "glapp" på ca 30 pulser in, men
det måste du ju ha räknat med. Sen så kan ju gränsvärdet enkelt
ställas till valfritt värde utan några divisioner.
> Givaren ger 3000 ppr...
> Ut ska komma ca 100 ppr
Om det är OK med 93.75 ppr ut så blir divisionen väldigt enkel.
3000 / 32 = 93.75.
Men annars så gör man nog inte detta med en division. Man låter
pulserna in räkna upp/ner ett register och vid vissa gränsvärden så
gör man en puls ut. Du får alltså ett "glapp" på ca 30 pulser in, men
det måste du ju ha räknat med. Sen så kan ju gränsvärdet enkelt
ställas till valfritt värde utan några divisioner.
Re: T: Aduino programmering
Är inte själv så sugen på att ha kvar den här svarven, har ingen plats för den är väl ett argument...tecno skrev:Hade mina aningar om att det var gamla blomman du vill få fart på. Gör livet enkelt och haka på en PC och styr svarven den vägen istället.
Mycket enklare att få till RÄTT parametrar den vägen än att hålla på och labba med koden till en Arduino.
Här uppe är det glest mellan dom som ev har nåt intresse för en så här grej.
Ibland känns tillvaron som en ökenvandring bland träsnidare, älgjägare och snöskoternissar.
Enda sättet att få den härifrån, kanske till och med få lite vinst på den är att få den att likna en vanlig svarv så mycket som möjligt.
Handvevad alltså, då kanske...
Re: T: Aduino programmering
Jag tänkte lika som sodjan, att man räknar alla pulser in och vid gränsvärden genererar pulser ut.
Tänker jag rätt här:
Om det till exempel ska bli en puls ut per 42,75 pulser in så kan man ha en räknare som är 42,75 x 4 = 171(blir väl en räknare på 0-170 som slår om till 0 på 171) och låter varje puls in åt ena hållet räkna upp och åt andra hållet räkna ner. Sen genererar man pulser ut på 43, 86, 128 och 0(171). Man tappar lite precision om det blir decimaler som i detta exempel, men det kommer ändå inte dra sig över längre distans.
Man måste ju generera två fyrkantpulser ut så att man härmar givaren och få riktningen.
Tänker jag rätt här:
Om det till exempel ska bli en puls ut per 42,75 pulser in så kan man ha en räknare som är 42,75 x 4 = 171(blir väl en räknare på 0-170 som slår om till 0 på 171) och låter varje puls in åt ena hållet räkna upp och åt andra hållet räkna ner. Sen genererar man pulser ut på 43, 86, 128 och 0(171). Man tappar lite precision om det blir decimaler som i detta exempel, men det kommer ändå inte dra sig över längre distans.
Man måste ju generera två fyrkantpulser ut så att man härmar givaren och få riktningen.
- tecno
- Inlägg: 27009
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Re: T: Aduino programmering
Hade jag plats så hade den fått nytt hem här på direkten.
Hävdar fortfarande att haka på en PC gör livet enklare för dig på alla de sätt.
Hävdar fortfarande att haka på en PC gör livet enklare för dig på alla de sätt.
Re: T: Aduino programmering
> Om det till exempel ska bli en puls ut per 42,75 pulser
Det är ju ett kolossalt dåligt val! Här handlar det ju bara om att
"växla ner" ett reglage (som ger onödigt många pulser) till något
som gör maskinen hanterbar. Självklart väljer man en faktor som
underlättar implementeringen och programmeringen. Gärna en
faktor som 2, 4, 8, 16, 32 o.s.v. Det kan ge andra fördelar...
Eftersom det är ett manuellt reglage så spelar det nog ingen
roll om det hela "drar sig" eller om pulser in missas ibland. Eller
har reglaget någon mekanisk skala som måste stämma hela tiden?
Det är ju ett kolossalt dåligt val! Här handlar det ju bara om att
"växla ner" ett reglage (som ger onödigt många pulser) till något
som gör maskinen hanterbar. Självklart väljer man en faktor som
underlättar implementeringen och programmeringen. Gärna en
faktor som 2, 4, 8, 16, 32 o.s.v. Det kan ge andra fördelar...
Eftersom det är ett manuellt reglage så spelar det nog ingen
roll om det hela "drar sig" eller om pulser in missas ibland. Eller
har reglaget någon mekanisk skala som måste stämma hela tiden?
Re: T: Aduino programmering
sodjan: 42,75 var inget val utan ett exempel
Edit: Sen om man ändå ska ha en uC så ser jag ingen anledning till att inte göra det exakt så man får lagom utslag. Det är ju lättare om 10mm på svarven är ett fast antal helvarv än om det är typ 5,3 varv.
Jag började fundera och skriva inlägget innan jag visste att det inte spelade någon roll vilken division det skulle vara, jag tog bara för givet att det skulle bli exakt. Mitt exempel funkar för i princip alla divisioner(även 2, 4, 8, 16 osv) utan att ta mycket processorkraft(tid) på udda divisioner.Glattnos skrev:Om det till exempel ska bli en puls ut per 42,75 pulser
Edit: Sen om man ändå ska ha en uC så ser jag ingen anledning till att inte göra det exakt så man får lagom utslag. Det är ju lättare om 10mm på svarven är ett fast antal helvarv än om det är typ 5,3 varv.
Re: T: Aduino programmering
> 42,75 var inget val utan ett exempel
OK, då ändrar jag mig till att det var ett kolossalt dåligt exempel...
Wiklis får avgöra om det måste vara ett jämt förhållande mellan antalet
varv på reglaget och antalet mm förflyttning i maskinen.
OK, då ändrar jag mig till att det var ett kolossalt dåligt exempel...
Wiklis får avgöra om det måste vara ett jämt förhållande mellan antalet
varv på reglaget och antalet mm förflyttning i maskinen.