Doseringspumpar med AVR, är det ens lönt för mig?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Skall försöka tänka på det med schemat.

Motorns lindningar som jag kallar A+B och C+D är inkopplade så här.
PIN0 A
PIN1 B
PIN2 C
PIN3 D
Problemet är att den hoppar fram och tillbaka.
Tar jag bort B och D så funkar det.
Kan inte riktigt komma på vad det som är fel.
Någon ide?
BASCOM Koden i sin helhet.

Kod: Markera allt

'// Port C bits 0,1,2,3 will be used for the motor.

$regfile = "m8515.dat"
$crystal = 16000000
Config Portc = Output
Portc = &B00000000

Dim Step_no As Integer

'// Only 4 step sequences for driving a stepper motor in full
'// step mode, so run around a loop incrementing each time, then
'// reset to 1 when all four steps have been completed.......
Do
   Step_no = Step_no + 1
   If Step_no = 5 Then
      Step_no = 1
   End If
   Gosub Motor_full
   '// This delay controls the actual step rate.....
   Waitms 5
Loop

'//This will full step the motor, the actual step being determined
'//by the previous Do.....Loop
Motor_full:
    Select Case Step_no
        Case 1
        '//step 1
        Set Portc.0
        Set Portc.2
        Reset Portc.1
        Reset Portc.3

        Case 2
         '//Step 2
        Reset Portc.0
       Set Portc.2
        Set Portc.1
        Reset Portc.3

        Case 3
      '// Step 3
        Reset Portc.0
        Reset Portc.2
        Set Portc.1
        Set Portc.3

        Case 4
       '//Step 4
        Set Portc.0
        Reset Portc.2
        Reset Portc.1
        Set Portc.3
    End Select
Return
End
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Icecap »

Jag brukar förvisso att göra en tabell som jag har en index-pekar i, då är det bara att ändra tabellen om man vill ändra stegsättet.

Men sekvensen ska se ut såhär:

A---
(A-C-)
--C-
(-BC-)
-B--
(-B-D)
---D
(A--D)

Om du vill stega i halvsteg ska du inkludera sekvenserna i parantes, vill du bara köra helsteg ska du skippa dessa.

Om den rycker lite hit och dit med den sekvens ska du testa att kasta om på A & B eller C & D.
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Jo en index hade varit toppen men det vet jag inte hur man skall få till riktigt.
Skall prova att ändra koden till A---, --C-
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Denna borde ju vara helsteg? Men det är samma sak där att den tar ett steg i varje riktning efter varandra, tar jag däremot bort B så går den 3 steg stannar upp och går sedan vidare.
Har provat att kasta om ABCD fram och tillbaka.

Kod: Markera allt

         Case 1
        'step 1   A
        Reset Portc.3
        Set Portc.0

        Case 2
       ' Step 2    C
        Reset Portc.0
        Set Portc.2

        Case 3
      '  Step 3       B
        Reset Portc.2
        Set Portc.1
      
      Case 4
       ' Step 4        D
        Reset Portc.2
        Set Portc.3
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Har kört fast igen.
Försöker att få igång menyer och submenyer med hjälp av knapp styrningar på lcd'n.
Är det någon som har några tips?
Kör i BASCOM/basic, kanske inte det mest vanliga här, men där förstår man ju lite mer än tex c, verkar för övrigt vara Icecaps favorit språk :)
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Icecap »

Mitt och många andras. jag spolade BASIC 1993 då jag gick i väggen med alla de problem det språk gav.

Jag har i övrigt gjort ett menysystem på 7 språk med drygt 100 punkter (i C såklart) i ett kommersiellt produkt och det fungerar strålande men du kanske ska förklara VAD du inte får snits på, det gör det otroligt mycket enklare att ge råd.

Jag har 3 knappar (faktisk 4 men den 4'de är låst till en viss funktion) som är '+', '-' och 'Meny'. Håller man inne 'Meny' i 3 sekunder eller mer blir det en 'OK' som används för att bekräfta ändringar med.
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Den sista som du pratade om är nog det jag är ute efter.

Som det är nu så står jag på ruta ett. Lcd'n är inkopplad och funkar, men jag har ingen kod alls att börja med för menyer och knapp funktionerna.
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Nu har jag gjort så här, men det känns inte rätt för att senare kunna välja en under meny till någon av meny1 eller 2. om man bara vill hålla sig till 3-4 knappar.
Några idéer?

Kod: Markera allt

Knapp1 Alias Pind.3
Config Knapp1 = Input
Set Pind.3

Knapp2 Alias Pind.2                                         
Config Knapp2 = Input                                     
Set Pind.2                                                  

Do
If Knapp1 = 0 Then Gosub Meny1
If Knapp2 = 0 Then Gosub Meny2
Loop
End

Meny1:
Cls
Locate 1 , 2
Lcd "Meny1"
Return
End

Meny2:
Cls
Locate 1 , 2
Lcd "Meny2"
Return
End
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Icecap »

"Några idéer?"

Jooo... men du (och andra) lär inte gilla dom...

>Lär dig ett ordentligt programmeringsspråk< är mitt svar och nu får jag nog en massa skit för det för "det går minsann att göra ett menysystem i BASIC!" men det skiter jag i helt enkelt. BASIC suger och de versioner som härmar C/Pascal är bara dumma varianter, varför inte "do the real deal"?

Jag brukar ha en Meny-index som stegas upp (och runt) med "Meny"-knappen och sedan köra en:
enum {Menu_Status, Menu_Whatever};

switch(Menu_Index)
{
case Menu_Status:
// Gör vad som ska göras i detta menypunkt
break;
case ... osv.
// Gör vad som ska göras i detta menypunkt
break;
default: Menu_Index = 0; // If unknown menu reset to start
}

På det vis kan jag enkelt kasta om på menypunkter, jag har skapligt bra namn på menyerna och det är enkelt och ganska tydligt att fixa det hela.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av sodjan »

> Nu har jag gjort så här,...

Så som du har löst det så har du valt att koppla ihop meny-strukturen med
strukturen i själva koden. Det gör att du bygger fast en viss menystruktur
lite onödigt hårt. Bättre är att låta menystrukturen representeras av datastrukturer
i koden och sedan ha en generell kod som inte behöver ändras (lika mycket
i alla fall) som sköter om själva hanteringen av menyerna.

D.v.s att man lägger information i någon slags strukturer (array, struct eller
vad det kallas i det aktuella "språket"). I dessa finns det information om hur
de olika nivåerna förhåller sig till varandra o.s.v.

Man kan lösa det på lite olika sätt. En variant är att för varje menyalternativ
bara hålla reda på vad som är "nästa", "föregående", "upp" och "action".
Om amn bara behöver "rulla" menyerna åt ett håll bortfaller "föregående".
"Upp" är den punkt man vill återgå till då man lämnar aktuell undermeny.
"Action" kan peka på en annan punkt i menystrukturen (alltså då man
går till en undermeny) eller en specifik funktion som ska köras i det läget.
Däremot är det mindre intressant att veta om man befinner sig på
"nivå2" eller "nivå3", det spelar så att säga ingen roll (i alla fall inte för koden,
det kan däremot vara pedagogiskt att visa det på skärmen, men det är en annan sak).

Med rätt design så behöver koden inte ändras alls bara för att menyerna ändras,
förrutom att det naturligstvis behöver läggas till "actions" för nya funktioner.
Användarvisningsbild
Glenn
Inlägg: 36767
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Glenn »

icecap: Jo, vi vet att du är lessen i ögat att BASIC har utvecklats sen du tittade på det för X år sedan (och dina argument som knappt gällde då inte funkar längre) , men det är så världen ser ut, saker blir ofta bättre med tiden. Och att man implementerar saker som finns i andra språk också tillhör också sakers gång, det är ju inte direkt så att allt i C är unikt heller, det mesta är ju stulet från andra språk.

Jaja.

Faktum är att man kan göra i stort sett samma kod som icecap skrev i en modern BASIC också, jag är inte så hemma
på bascom men det jag har sett av den är att den är väldigt lik PBP där det skulle funka fint.

Jag har skrivit ett menysystem med flikar osv som jag kör på en 20x2-LCD, fast det projektet ligger lite på is, menysystemet är dock hyfsat klart om jag minns rätt.. tyvärr blir det lite småfult om man bara har två raders display..

http://www.repulsiv.se/projects/timelap ... ermenu.jpg
http://www.repulsiv.se/projects/timelap ... htmenu.jpg
http://www.repulsiv.se/projects/timelap ... etting.jpg

Efetrssom prylen bara har tre knappar så är den översta "pil höger" den understa "pil vänster" och mittenkappen heter "S", håller man in S
kommer man till settings, och sedan funkar den som "enter" typ, och alla inställningarna görs med pilarna, först väljer man flik, varje tryck på högerpil flyttar till "nästa" meny, och vänsterpil "förra", och under varje flik finns det nån form av settings, när man väljer tex "light" fliken så kommer man till det aom syns i "lightsetting.jpg" där man ställer in ljuset med antalet streck undertill, högerpil ökar och vänsterpil minskar, trycker man på S sparas det och man kommer tillbaka till flikmenyn. väljer man "counter" får man helt enkelt upp typ "Set no of counts: xx" där xx är en siffra som ökas och minskas med pilarna och sparas med S. andra menyer är i form av "Yes/no" där man markerar rätt alternativ med pilarna och trycker S. Den sista menyn är "save" som sparar ner allt, antingen till minnet eller EEPROM om man vill.

Funkar rätt okej, det enda jobbiga är att om man vill ha "grafiska" flikar måste man designa egna unika bokstäver till dom för att få plats = jobbigt,
nöjer man sej med ren text och medföljande symboler (först använde jag typ "-----/counter\----") så är det betydligt lättare.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av sodjan »

Ahem...

Vill bara "flika in" att en sådan här liten pryl som på bilden nedan
är trevlig för att bygga 4-knappars menysystem. Då får man i princip
hela mekaniken färdigbyggd, så att säga... :-)
16x2 HD44780 LCD, 4 knappar och 3 LEDs.
(Tyvärr ej backlight på LCD'n...)

Finns hos eran favoritleverantör av elektroniksurplus... 8)

Bild
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Glenn>> Du råkar inte ha koden kvar?
Användarvisningsbild
Glenn
Inlägg: 36767
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Glenn »

Jodå, men jag får kolla hurpass släppbar den är först :)

Kan ju klippa ur menybiten kanske iofs.

Det är ju dock för PBP, men det borde gå ganska lätt att porta till bascom.
Användarvisningsbild
Jonaz
Inlägg: 2358
Blev medlem: 4 november 2003, 22:06:33
Ort: Huddinge

Re: Doseringspumpar med AVR, är det ens lönt för mig?

Inlägg av Jonaz »

Glenn>> Hur gick det? Fick du fatt på den?

Kan någon vara snäll o kolla om denna funkar.
http://winavr.scienceprog.com/example-a ... utine.html

Källkoden
http://winavr.scienceprog.com/download/LCD_menu.zip

Försöker med en Mega32 men det händer inget på lcd'n Har kopplat in lcd'n enligt schemat på sidan.
Skriv svar