Hur styra en stegmotor med en uC

Planering och tankar kring eventuella framtida projekt.
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av jojje »

Jepp, om man inte tar det som ett rent hobbyprojekt. :D

Eftersom jag redan har grejjer till PIC, så är jag väl "tvungen" att stanna där, iaf just nu. :vissla:
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9112
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av AndersG »

Ibland blir kanske ett tangentbord enklare än en myriad knappar. Hurdan dispåay har du tänkt dig?
ie
EF Sponsor
Inlägg: 1375
Blev medlem: 23 oktober 2006, 13:12:57
Ort: Tyresö

Re: Hur styra en stegmotor med en uC

Inlägg av ie »

Vore det inte himla bra med en rotationsenkoder (eller vad det heter) i stället för (eller som komplemet till) knappar.

Jag tror man jobbar bättre genom att vrida än att knappa sig fram.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9112
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av AndersG »

Man kan ju ha båda. Knappar för stora steg och ratt för finjustering, typ:

Bild
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av jojje »

Vad har jag missat i min förklaring? Jag ska inte åka nånstans med knappar eller ratt, jag ska ställa in ett värde, tex 176, sen ska stegmotorn själv stega sig fram till det. Först en etta, sen en sjua och siste en sexa. Första knappen för hundratalen stegar mellan noll, ett, två,,, när den kommit till nio ska siffran börja om igen från noll. Nästa knapp likadant men för tiotalen, osv.
Ska man ställa om till värdet 276, så trycker man en gång på hundratalsknappen, då står det alltså 276 på diskplayen. Inga amdra knappar behöver tryckas på.
Ska man sen ställa in 216, trycker man således på tiotalsknappen fyra gånger. Då kommer det att stå 216 i displayen.
Knapparna ska sitta direkt under varje siffra. Då blir det lättare att se vem man ska trycka på.

Vad kan man ha för nytta av en ratt? Finns det någon som uppfattat vad jag menar och kan förklara på ett annat sätt?
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9112
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av AndersG »

Jag ska inte åka nånstans med knappar eller ratt, jag ska ställa in ett värde, tex 176, sen ska stegmotorn själv stega sig fram till det.
OK, men det är alltid frågan om hela mm? Således tänker du dig ngt i stil med:

Kod: Markera allt

  ^^^
X 999
  ***
  ^^^
Y 999
  ***
  ^^^
Z 999
  ***
*** är nedåtpilar.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur styra en stegmotor med en uC

Inlägg av sodjan »

> Finns det någon som uppfattat vad jag menar och kan förklara på ett annat sätt?

Notera att det var i *samma* inlägg där du frågar detta som du även beskrev
hur *du* tänkte dig dina 100/10/1 tals knapper. Varför skulle någon annan ha
råkat gissa att det var just så du menade !? Dessutom behöver du ju 3 knappar
för att hantera ett tre-siffrigt värde.

Det är ju bara en av massor olika sätt att lösa just inställningen av värdet.

> Vad kan man ha för nytta av en ratt?

Nytta och nytta. Det är bara ett annat sätt att lösa samma sak, och dessutom
en metod som många tycker är ganska trevlig. Med lite smart programvara kan
man göra det väldigt snabbt och trevlig, som t.ex accelerationsavkänning så
att om man vrider lite snabbare så stegar värdet upp snabbare, sedan när man
vrider långsammare så går den över i finjustering automatiskt. Bara som ett
exempel...

Samma sak kan göras med knappar. Du behöver inte separata knappar för 100/10
resp 1-tal. Man kan ha en knapp som först stegar 1-tal. Sedan, om man håller på
samma knapp mer än ett par sekunder så går den över i 10-tals läge o.s.v. Eller
två snabba tryck efter varandra för att skifta läge, eller... Tja, det går att göra på
många sätt och min poäng är hur något skulle kunnat gissa vad just du menade.

Och när det gäller själva stegmotorstyrningen så har du inte visat något
exempel eller länk till något styrkort eller liknande. De flesta är nog ganska på
det klara med hur en stegmotor fungerar i grunden, men hela lösningen beror ju
väldigt mycket på vad du stoppar *mellan* processorn och själv motorn.

Jag förstår inte alls vad lysdioder har med styrningen av stegmotorer att göra.
Det ända som de eventuellt har gemensamt är att det "styrs" av utgångar på
en processor, men det säger ju ingenting. Det intressanta borde vara logiken
som gäller för den aktuella motorstyrningen.
Gimbal
Inlägg: 8673
Blev medlem: 20 april 2005, 15:43:53

Re: Hur styra en stegmotor med en uC

Inlägg av Gimbal »

Vad kan man ha för nytta av en ratt? Jo man skruvar fram det värde man vill ha på displayen, vrid åt höger och displayen räknar upp, vrid åt vänster och den räknar ner.

Har själv gjort nästan en sådan här apparat till ett sågverk, med ratt ställer man in den tjocklek man vill såga på displayen sedan får man (helt manuellt) med vev ställa in höjden på kedjesågen, på displayen visas då aktuell position på svärdet och avstånd till närmsta snitt och lite annan data. Denna vev skulle kunna motoriseras men jag föredrar att veva.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur styra en stegmotor med en uC

Inlägg av sodjan »

> Denna vev skulle kunna motoriseras men jag föredrar att veva [för hand...]

Jo, "nödstoppet" blir ju lite enklare att lösa... :-) :-)
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av jojje »

OK, alla knappar är uppåtknappar. Då blir det så här. Ska man ställa in 100 mm extra, så är det bara ett tryck på en knapp.
Är jag verkligen så dårlig att förklara eller?
Hade nog vart lättare att jag gjort hela skiten först, sen ev. lagt ut resultatet här. :lol:

Kod: Markera allt

000,0
 ^^^ -
111,0
-^^ -
122,0
-^^ -
133,0
-^^ -
144,0
-^^ -
155,0
-^^ -
166,0
-^- -
176,0

Nu ska vi ställa in värdet 276
176,0
^-- -
276,0

Sista värdet blir 216
276,0
-^- -
286,0
-^- -
296,0
-^- -
206,0
-^- -
216,0
limpan4all
Inlägg: 8445
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Hur styra en stegmotor med en uC

Inlägg av limpan4all »

Och sen ändra till 105,9 :vissla: :vissla: :vissla:

I värsta fall 36 knapptryckningar för att ändra ett fyrsiffrigt värde...
Detta genererar irriterade användare, tro mig jag vet!
I mitt fall handlade det bara om en enda initierande engångskonfigurering.
Alla gillade produkten men ville inte köpa förens vi konstruerat om initieringsprocessen...
Inte bra, gör om, gör rätt.
Ett 4*4 tangentbord kostar antagligen mindre och då klarar man det med fyra tangenttryckningar...

Bli inte sån jojje, vi försöker att ge dig en liten del av vår outsinliga visdom och samlade erfarenhet bara :) :) :) .
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur styra en stegmotor med en uC

Inlägg av sodjan »

> Är jag verkligen så dårlig att förklara eller?

Absolut inte ! Jag tror alla *nu* förstår exakt hur du menar. :-)

Men alla är inte lika förtjusta i lösningen, och det får du nog acceptera,
det finns ju många sätt att lösa just en sådan här inmatning av ett värde.
Det kan ju finnas något som vi just nu inte vet om just ditt behov som
gör att din lösning är den bästa. Vilket är helt OK, så klart.

Att du får andra, alternativa, förslag på lösningar betyder ju inte med automatik att
vi inte har förstått *din* lösning, det kanske bara betyder att vi *har* gjort det... :-)

Hur som helst, jag har tappat tråden här, vad var det igentligen som var frågan ?
Du har ju alltså en lösning som du vill använda. Bara att "sy ihop" det hela med
displayer och styrning av motorstyrningen.
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av jojje »

OK, jag förstår och vet att det finns andra och bättre lösningar, men sen ska jag kunna skriva koden som ska utföra det, eller iaf fatta hur det funkar. På "mitt sätt" är det bara lite IF-satser, men en ratt har jag ingen aning om hur man gör. Det är nog mycket lättare om man är lika duktig som ni, men en gröngöling som jag. :roll:

Om vi nu skulle göra på bästa sätt, med ratt och/eller 4x4 tagentbord, hur skulle då koden kunna se ut? Har någon något exempel?

Edit: Jag har föresten både ratt och 4x4 tagentbord i skrotlåddan för test.

Edit2: Ursäkta om jag blir lite :twisted: ibland, men mina sår gör att jag går upp i limningen ibland, speciellt efter att morfinet börjar gå ur kroppen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur styra en stegmotor med en uC

Inlägg av sodjan »

> På "mitt sätt" är det bara lite IF-satser,

Hm. Det beror ju lite på hur knapparna läses av. Man måste ta hand
om kontaktstudsar o.s.v. Om det görs i någon färdig "Button()" rutin
eller om man gör det själv i egen kod vet vi ju inget om just nu.

Men OK, låt oss anta att du får ett läge i koden där du vet att en viss
knapp är nedtryckt, då är det "bara" att börja räkna. Sedan behöver du
antagligen en "puls" i koden, d.v.s en slags takt som styr det hela, hur
snabbt resp siffra ska börja "räkna". Eller är det tänkt att man ska/måste
släppa knappen och trycka en gång till för att räkna ? D.v.s inte så att
det börjar räkna upp om man hållet knappen intryckt en viss tid ?

Du behöver även ta hand om fallet då två (elle fler) knappar är intryckta
samtidigt.

Men visst ! Din lösning blir sannolikt en av de enklare rent kodmässigt !

> Om vi nu skulle göra på bästa sätt, med ratt och/eller 4x4 tagentbord, hur
> skulle då koden kunna se ut? Har någon något exempel?

Ett "exempel" blir kanske lite svårt, det blir ju i princip detsamma som
hela funktionen. Sen så är det nog fortfarande allt för många okända
faktorer kring det hela för att göra en lösning utifrån vad som har
framkommit i tråden.
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Re: Hur styra en stegmotor med en uC

Inlägg av jojje »

OK, men skulle man gå för en sån, då måste jag ha hjälp annars kommer jag att fassna.
Vi/jag får ta det som ett svar å gå vidare. Vidare till vadå, hmm...

Det som ska sitta på "utgången" är i princip en sån här. På sidan 3 ser man hur den är kopplad.
Inga konstigheter ens för mig. :D Ser du likheten sodjan med att koppla några lysdioder för att testa så allt funkar?
I princip är det bara Step och Dir behöver kopplas.

Edit: I PBP ser Button() ut så här:

Kod: Markera allt

BUTTON Pin,Down,Delay,Rate,BVar,Action,Label

Read pin and optionally performs debounce and auto-repeat. Pin is automatically made an input. Pin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0).

Down     State of pin when button is pressed (0..1). 
Delay  Cycle count before auto-repeat starts (0..255). If 0, no debounce or auto-repeat is performed. If 255, debounce, but no auto-repeat, is performed. 
Rate  Auto-repeat rate (0..255). 
BVar  Byte-sized variable used internally for delay/repeat countdown. It must be initialized to 0 prior to use and not used elsewhere in the program. 
Action  State of button to act on (0 if not pressed, 1 if pressed). 
Label    Execution resumes at this label if Action is true. 

BUTTON needs to be used within a loop for auto-repeat to work properly. BUTTON accomplishes debounce by delaying program execution for a period of milliseconds to wait for the contacts to settle down. The default debounce delay is 10ms. To change the debounce to another value, use DEFINE:

Example

DEFINE BUTTON_PAUSE 50 ' button debounce delay is 50ms

Be sure that BUTTON_PAUSE is all in upper case. In general, it is easier to simply read the state of the pin in an IF..THEN than to use the BUTTON command as follows:

If PORTB.2 = 1 Then notpressed
Skriv svar