Pages: 1 ... 10 11 [12] 13   Go Down
Author Topic: hulp gevraagd voor arduino regelunit voor distilleer apparaat  (Read 40764 times)
0 Members and 1 Guest are viewing this topic.
The Netherlands
Offline Offline
Edison Member
*
Karma: 49
Posts: 1625
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hoi Rolf.

Ik heb zoals je vroeg nog even naar je countdown sketch gekeken.
Daarvoor heb ik de instellingen voor het scherm aangepast aan mijn 1602 schermpje.
En de plaats waar afgedrukt word naar de tweede regel en alles min 4 gedaan, omdat ik anders buiten het schermpje aan het printen ben.

Ik heb een paar dingen aan te merken op die sketch;
Ten eerste is het altijd beter als je niet meer dan noodzakelijk naar je LCD print.
In jouw code kun je er op uitkomen dat je per rondje 3 keer naar het scherm print.
Om dat te voorkomen, kun je het volgende doen:
Je controleert of je onder de 10 minuten uitkomt, en als dat zo is dan print je eerst een nul.
Je controleert gelijk hierna of je onder de tien seconden was uitgekomen, en in dat geval print je eerst een nul, en dan de secondes (op de juiste plaats).
Daardoor print je eerst een waarde naar het scherm, en als je onder de negen uitgekomen blijkt te zijn, print je alles gelijk nog een keer maar dan met een nul er voor.

Wat je overslaat, is controleren of je boven de negen minuten zit.
Wanneer je dus eerst controleert of je boven de negen minuten zit, en dan pas de eerste print doet, dan voorkom je al een eerste nodeloze print als je NIET boven de negen minuten zit.

Verder heb je  wanneer je onder de tien minuten zit geen controle of je onder de tien seconden zit.
Hierdoor krijg je een wel heel interessant gezicht.

Wanneer je nou eerst kijkt of je boven 9 minuten zit, en uitsluitend in dat geval de minuten en seconden zonder verdere bewerkingen afdrukt;
Dan kijkt of je onder de tien minuten zit en allen dan eerst een nul afdrukt en dan de hele rest;
En dan pas kijkt of je onder de tien seconden zit en ook alleen dan eerst nul seconden en daar achter de seconden afdrukt.
Dan druk je wel dubbel af, maar lang niet zo veel meer.
Je doet de dingen dan dus net ff in een andere volgorde, maar daardoor wel efficiënter.

En als laatste telt je countdown gewoon door als je onder nul bent uitgekomen.

Ik ben hier op uitgekomen:
Code:
void loop() {                                         // Begin LOOP.

 unsigned long currentMillis = millis();
 if(currentMillis - previousMillis > interval) {
    previousMillis  = currentMillis;
    Sec = Sec-1;
 if((Sec)== 00) Min=Min-1;
 if((Sec)== -1) Sec=59;
 if (Min>9){                                   // Dit is nieuw
     lcd.setCursor(15,3);
     lcd.print(Min);
     lcd.print(":");
     lcd.print(Sec);
 }
 if(Min<10) {
     lcd.setCursor(15,3);
     lcd.print(0);
     lcd.setCursor(16,3);
     lcd.print(Min);
     lcd.print(":");
     lcd.print(Sec);
 }
 if(Sec<10) {
     lcd.setCursor(18,3);
     lcd.print(0);
     lcd.setCursor(19,3);
     lcd.print(Sec);
 }
 
  }
   }                                                 // Einde Loop.

Dan komt er dus een min streepje voor, en dat ding gooit ook roet in het eten.
Want min tien minuten is dan dus lager als tien minuten, dus komt er een nul, dan een min en dan weer tien: 0-10
Das een raar gezicht.
Ik zou er iets leuks voor bedenken om de klok op 00:00 te laten knipperen als je onder nul uitkomt.

Je moet even kijken of de setCursor regels kloppen, want die had ik voor mezelf dus aangepast, hoop dat ik ze goed terug gezet heb.
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hoi Mas

Ik heb de code geprobeerd en hij werkt naar behoren.
Inderdaad mooie simpele oplossing!!

Code:
if (Min>9){ 

Dat ik hier zelf niet ben opgekomen.
Dat is het mooie hier aan het forum.
Of eindelijk aan jou, Thanx..

Ook heb je de set cursor netjes terug gezet.
De timer staat mooi rechts onder in het lcd scherm.

Inderdaad telt hij gewoon door na 00:00.
Alleen moet hij als de tijd dadelijk voorbij is weer veder gaan bij een ander stukje code.
En zal ik de timer rechts onder in beeld wissen en weer de oorspronkelijke tekst terug zetten.

Logged

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zo de timer is ingevoerd.
Ik heb nog wat meerdere dingen aangepast.

We gaan nu veder in het programma waar we kunnen kiezen voor de optie:
Distilleren.

Na wat keuzes gedaan te hebben komen we op het hoofdscherm uit.
Als we hebben gekozen in de keuzes voor:Puur Distilleren.
Komen we in het menu   mm=100

Ik zal de code van mm=100 hier plaatsen:

Code:
if (mm ==100)                                                      // Zitten we in menu mode 100 ?
  {                                                                  // A / We gaan het menu afbeelden
  sensors.requestTemperatures();                                     // Zend een commando om de temperatuuren te krijgen
   
    Tin = sensors.getTempC(Probe01);
    Tkw = sensors.getTempC(Probe02);
    Temp = sensors.getTempC(Probe03);
   
    lcd.setCursor(0,1);                                              // Zet de cursor op de tweede regel op de eerste positie.
    lcd.print(" NAALDKRAAN:  POT:");                                 // Zet de tekst neer: " NAALDKRAAN:  POT:"
    lcd.setCursor(0,2);                                              // Zet de cursor op de derde regel op de eerste positie.                                                                         
    lcd.print("T-in:");                                              // Zet de tekst neer: "T-in:"
    lcd.print(Tin);                                                  // Zet de variable Tin neer
    lcd.setCursor(9,2);                                              // Zet de cursor op de derde regel op de tiende positie.                                                                         
    lcd.print(" ");                                                  // En print een spatie Waarom? ik wil maar 1 cijfer achter de komma
    lcd.setCursor(11,2);                                             // Zet de cursor op de derde regel op de 12 positie.
    lcd.print("Temp:");                                              // Zet de tekst neer: "Temp:"
    lcd.print(Temp);                                                 // Zet de variable Temp neer
    lcd.setCursor(0,1);                                              // Zet de cursor op de Tweede regel op de 1 positie.
    lcd.print(" NA");                                                // Zet de tekst neer: " NA" anders komt hier de temp na de komma van Temp te staan
    lcd.setCursor(0,3);                                              // Zet de cursor op de vierde regel op de eerste positie.                                                                         
    lcd.print("T-kw:");                                              // Zet de tekst neer: "T-kw:"   
    lcd.print(Tkw);                                                  // Zet de variable Tkw neer
    lcd.setCursor(9,3);                                              // Zet de cursor op de vierde regel op de 10 positie.                                                                         
    lcd.print(" ");                                                  // En print een spatie Waarom? ik wil maar 1 cijfer achter de komma       
    lcd.setCursor(11,3);                                             // Zet de cursor op de vierde regel op de 12 positie.
    lcd.print("T-az:");                                              // Zet de tekst neer: "T-az:"
   
    if ((mm==100)&&(key ==Esc))                                      // Waneer toets 3 "Esc" gedetecteerd werd en menu is 100
  {                                                                  // A1   
  KeyDet = 0;
  mm = 2;                                                            // ga naar menu modus 2
  lcd.clear();                                                       // maak het lcd scherm leeg oftewel wis het vorige menu
  }                                                                  // Einde A1
   
    if (Tin <25) {                                                   // Waneer de temp. lager is dan 25 graden van Tin. Doe het volgende:
    digitalWrite (ssr, HIGH);                                        // Zet de uitgang van ssr op hoog. (verwarmings element in boiler gaat aan.)
    lcd.setCursor(0,0);                                              // Zet de cursor op regel 1 op de eerste positie.
    lcd.print ("  AAN HET OPWARMEN");                                // Zet de tekst neer:  AAN HET OPWARMEN.
    }
    else {digitalWrite (ssr, LOW);                                   // Waneer de temp. van Tin hoger is doe het volgende:
   
    lcd.setCursor(0,0);                                              // Zet de cursor op regel 1 op de eerste positie.
    lcd.print ("                  ");                                // En print een spatie over de eventueele tekst.
    }
    if (Tin >=25) {                                                  // Waneer de temp. groter of gelijk is dan 25 graden van Tin. Doe het volgende:
    lcd.setCursor(0,0);
    lcd.print ("AAN HET STABILIZEREN");                              // Zet de tekst neer:  AAN HET STABILLIAZEREN   
    lcd.setCursor(10,3);
    lcd.print ("Tijd:");
   
    Sec = Sec-1;
    if((Sec)== 00) Stijd=Min-1;
    if((Sec)== -1) Sec=59;
    if (Min>9){                                   // Dit is nieuw
     lcd.setCursor(15,3);
     lcd.print(Min);
     lcd.print(":");
     lcd.print(Sec);
    }
    if(Min<10) {
     lcd.setCursor(15,3);
     lcd.print(0);
     lcd.setCursor(16,3);
     lcd.print(Min);
     lcd.print(":");
     lcd.print(Sec);
    }
    if(Sec<10) {
     lcd.setCursor(18,3);
     lcd.print(0);
     lcd.setCursor(19,3);
     lcd.print(Sec);
   }
 
   
 

     
     
   
                                                     
 }                                                                 
  }                                                               
 

Dan krijg je een indruk hoe het moet gaan worden.
In dit menu zal nog een hoop moeten veranderen.
Ook zal ik de komplete code tot nu toe plaatsen

* Distiller_Mei_1.ino (81.26 KB - downloaded 9 times.)
Logged

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nog een kleine update van de stappenmotor en de naaldkraan.
Aandrijving van de stappenmotor is nu klaar naar de naaldkraan.
alles op een "proefplaatje om het te kunnen testen
met mijn programma als ik zo ver ben.
Nu alleen wachten op de potmeter 10 turns.





Weet niet of het wel de bedoeling is van dit forum om hier een project zo lang neer te zetten?
Als het niet zo is hoor ik dit graag..
Gr Rolf
Logged

The Netherlands
Offline Offline
Edison Member
*
Karma: 49
Posts: 1625
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hoe ga je de potmeter koppelen ?
Ander O ringetje in plaats van deze ?
Pas wel op dat je de potmeter absoluut niet verder kan draaien dan diens mechanische bereik, anders gaat ie natuurlijk kapot.

Voor wat betreft menu 100:
Het valt me op dat je tijdens dat menu het scherm vult met informatie over het opwarmen van de ketel.
Is de temperatuur onder 25, dan zet je de verwarming aan en laat je weten dat er word opgewarmd.
En anders word de inhoud van het scherm op die plaats gewist en de verwarming uitgezet.

Daarna kijk je of de temperatuur hoger of gelijk 25 is, en in dat geval ga je vertellen dat er gestabiliseerd word en je teller word weergegeven.

Dit betekent dus dat wanneer de temperatuur niet lager is als 25 dan word er altijd wat gewist op je scherm, en ook altijd wat terug geschreven.
Na de eerste keer dat je dat deed, blijf je dat dus doen, elke keer dat je sketch dit stukje passeert.
Dat betekent dat hier je scherm nodeloos vaak gewist en opnieuw beschreven word met dezelfde informatie en dat is niet efficiënt.
Hier kun je dus beter bijhouden of die mededeling al op het scherm staat, en in dat geval het stukje overslaan waar je vertelt dat er gestabiliseerd word.
Het weergeven dat er gestabiliseerd word en het afbeelden van de timer zou ik trouwens ook uit elkaar halen.

Dat scheelt je kostbare tijd, want het scherm beschrijven (wissen is ook schrijven (van spaties) naar het scherm) kost relatief veel tijd.

Verder kom je heel vaak langs dit stukje.
Ik kan me voorstellen dat wanneer je aan het stabiliseren bent, de temperatuur weer onder de 25 zakt.
Daar let je nu nog niet op, dus wanneer dat zou gebeuren, gaat de verwarming weer aan, en je timer stopt met weergeven van het verstrijken van de tijd, terwijl die wel verder loopt.
Als de temperatuur dan weer hoger of gelijk 25 is, springt de weergegeven tijd ineens een stuk verder om door te lopen zolang ie hoger of gelijk 25 blijft.
Is dat ook de bedoeling ?

Verder heeft hier het aflopen van de timer geen consequentie, dus dat moet je ook nog oppikken.
Dit kun je ook weer bijhouden met een variabele.

Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hoi Mas.

Quote
Hoe ga je de potmeter koppelen ?
Ander O ringetje in plaats van deze ?
Pas wel op dat je de potmeter absoluut niet verder kan draaien dan diens mechanische bereik, anders gaat ie natuurlijk kapot.

Ik ga de potmeter op de grote poelie zetten.
Als je goed kijkt op de foto zie je dat er een verhoging opzit met een gat geboord van 6.3mm.
en twee verzonken inbusjes om de potmeter as te borgen.
Ik wil hem hierop zetten omdat de naaldkraan maar 3.5 slag kan maken.
Zodat de 10 turns potmeter nooit kapot kan gedraaid worden.
Quote
Voor wat betreft menu 100:
Het valt me op dat je tijdens dat menu het scherm vult met informatie over het opwarmen van de ketel.
Is de temperatuur onder 25, dan zet je de verwarming aan en laat je weten dat er word opgewarmd.
En anders word de inhoud van het scherm op die plaats gewist en de verwarming uitgezet.

Daarna kijk je of de temperatuur hoger of gelijk 25 is, en in dat geval ga je vertellen dat er gestabiliseerd word en je teller word weergegeven.

Dit betekent dus dat wanneer de temperatuur niet lager is als 25 dan word er altijd wat gewist op je scherm, en ook altijd wat terug geschreven.
Na de eerste keer dat je dat deed, blijf je dat dus doen, elke keer dat je sketch dit stukje passeert.
Dat betekent dat hier je scherm nodeloos vaak gewist en opnieuw beschreven word met dezelfde informatie en dat is niet efficiënt.
Hier kun je dus beter bijhouden of die mededeling al op het scherm staat, en in dat geval het stukje overslaan waar je vertelt dat er gestabiliseerd word.
Het weergeven dat er gestabiliseerd word en het afbeelden van de timer zou ik trouwens ook uit elkaar halen.

Dat scheelt je kostbare tijd, want het scherm beschrijven (wissen is ook schrijven (van spaties) naar het scherm) kost relatief veel tijd.

Ik heb inderdaad dat stukje nu gewist omdat dat eindelijk niet van toepassing is.
Ook de temperatuur van 25 graden is lager gekozen voor te testen.
Nu kan ik de sensor vast pakken en kijken wat de schakeling doet.

Code:
if (mm ==100)                                                     // Zitten we in menu mode 100 ?
  {                                                                 // A / We gaan het menu afbeelden
  sensors.requestTemperatures();                                    // Zend een commando om de temperatuuren te krijgen
   
    Tin = sensors.getTempC(Probe01);
    Tkw = sensors.getTempC(Probe02);
    Temp = sensors.getTempC(Probe03);
   
   
    lcd.setCursor(0,1);                                             // Zet de cursor op de tweede regel op de eerste positie.
    lcd.print(" NAALDKRAAN:  POT:");                                // Zet de tekst neer: " NAALDKRAAN:  POT:"
    lcd.setCursor(0,2);                                             // Zet de cursor op de derde regel op de eerste positie.                                                                         
    lcd.print("T-in:");                                             // Zet de tekst neer: "T-in:"
    lcd.print(Tin);                                                 // Zet de variable Tin neer
    lcd.setCursor(9,2);                                             // Zet de cursor op de derde regel op de tiende positie.                                                                         
    lcd.print(" ");                                                 // En print een spatie Waarom? ik wil maar 1 cijfer achter de komma
    lcd.setCursor(11,2);                                            // Zet de cursor op de derde regel op de 12 positie.
    lcd.print("Temp:");                                             // Zet de tekst neer: "Temp:"
    lcd.print(Temp);                                                // Zet de variable Temp neer
    lcd.setCursor(0,1);                                             // Zet de cursor op de Tweede regel op de 1 positie.
    lcd.print(" NA");                                               // Zet de tekst neer: " NA" anders komt hier de temp na de komma van Temp te staan
    lcd.setCursor(0,3);                                             // Zet de cursor op de vierde regel op de eerste positie.                                                                         
    lcd.print("T-kw:");                                             // Zet de tekst neer: "T-kw:"   
    lcd.print(Tkw);                                                 // Zet de variable Tkw neer
    lcd.setCursor(9,3);                                             // Zet de cursor op de vierde regel op de 10 positie.                                                                         
    lcd.print("  ");                                                // En print een spatie Waarom? ik wil maar 1 cijfer achter de komma       
    lcd.setCursor(11,3);                                            // Zet de cursor op de vierde regel op de 12 positie.
    lcd.print("T-az:");                                             // Zet de tekst neer: "T-az:"
    lcd.print(Taz);
   
    if ((mm==100)&&(key ==Esc))                                     // Waneer toets 3 "Esc" gedetecteerd werd en menu is 100
    {                                                               // A1   
       KeyDet = 0;
       mm = 2;                                                      // ga naar menu modus 2
       lcd.clear();                                                 // maak het lcd scherm leeg oftewel wis het vorige menu
    }                                                               // Einde A1
   
    if (Tin <25) {                                                  // A2  Waneer de temp. lager is dan 25 graden van Tin. Doe het volgende:
    digitalWrite (ssr, HIGH);                                       // Zet de uitgang van ssr op hoog. (verwarmings element in boiler gaat aan.)
    lcd.setCursor(0,0);                                             // Zet de cursor op regel 1 op de eerste positie.
    lcd.print ("  AAN HET OPWARMEN  ");                                // Zet de tekst neer:  AAN HET OPWARMEN.
    }                                                               // Einde A2
    if (Tin >=25) {                                                 // A3  Waneer de temp. groter of gelijk is dan 25 graden van Tin. Doe het volgende:
    lcd.setCursor(0,0);
    lcd.print ("AAN HET STABILIZEREN");                             // Zet de tekst neer:  AAN HET STABILLIAZEREN   
    lcd.setCursor(10,3);
    lcd.print ("Tijd:");
    }                                                               // Einde A3
    if (Tin >=25) {
    Sec = Sec-1;
    if((Sec)== 00) Stijd=Min-1;
    if((Sec)== -1) Sec=59;
    if (Min>9){                                                     // Dit is nieuw
     lcd.setCursor(15,3);
     lcd.print(Min);
     lcd.print(":");
     lcd.print(Sec);
    }
    if(Min<10) {
     lcd.setCursor(15,3);
     lcd.print(0);
     lcd.setCursor(16,3);
     lcd.print(Min);
     lcd.print(":");
     lcd.print(Sec);
    }
    if(Sec<10) {
     lcd.setCursor(18,3);
     lcd.print(0);
     lcd.setCursor(19,3);
     lcd.print(Sec);
    }
     }                                                                 
      }                                                             // -- Sluit mm100 --                                                               
 

Ook heb ik de timer proberen te scheiden
Weet niet of je dit zo bedoelt zoals ik in de code heb gedaan?

Ook heb ik nog een vraagje.
Zoals je ziet heb ik het binnen halen van de temp sensors in dit menu onder gebracht.
Omdat anders het instel menu zeer traag begon te reageren.
Dit is echter geen probleem want ik hoef niet terug te gaan naar instellingen
onder het distilleren .

Maar nu krijg ik dit probleem wel weer in mm=100
want ik heb toegevoegd dat ik wel kan stoppen en terug kan keren naar mm=4

Code:
  if ((mm==100)&&(key ==Esc))                                     // Waneer toets 3 "Esc" gedetecteerd werd en menu is 100
    {                                                               // A1   
       KeyDet = 0;
       mm = 2;                                                      // ga naar menu modus 2
       lcd.clear();                                                 // maak het lcd scherm leeg oftewel wis het vorige menu
    }                                                               // Einde A1
   

Allen moet ik nu esc toets lang inhouden om mm=100 te verlaten.
en niet even duwen en eruit.
Weet jij mischien waar in ik dit moet zoeken?

Ook moet ik nog het een en ander aansturen onder mm=100 stappenmotor enz
zal even proberen op te schrijven wat er moet gaan gebeuren onder mm=100
Dat is het laatste wat er onder dit menu moet gaan gebeuren.
En ook bijna het eind van het programma wordt.

Logged

The Netherlands
Offline Offline
Edison Member
*
Karma: 49
Posts: 1625
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah okee dat was me niet opgevallen met de polie, dacht dat daar de verbinding met de kraan zat.
En met die 3.5 slag die je kraan kan maken zit je ook prima, ik raad je wel aan de potmeter in de middenstand te zetten voor je 'm vast gaat zetten.

Die vertraging zit zonder twijfel in het binnenhalen van die waardes.
Je stuurt dan namelijk een commando naar de temperatuursensor, die dat commando gaat verwerken, de temperatuur bepaalt, en vervolgens het antwoord terug stuurt.
Ik heb het donkerbruine vermoeden dat als je eenmaal die waarde opvraagt, je moet wachten tot die terug is, en dat dat relatief lang duurt.
En jij doet dat 3 keer achter elkaar.

Als het voor de rest van de sketch niets uitmaakt, dan kun je tussen de verschillende sensoren ook nog even kijken of er op ESC word gedrukt.
Dan zie en verwerk je dat wel tot 3 keer sneller dan nu.
En het is ook de vraag of je alle 3 de sensoren op dat moment moet binnenhalen, of dat er wellicht een beter moment voor is.
Ik zie wel dat je de waardes van de sensoren alle 3 op je scherm laat zien.

Hoe lang moet je overigens drukken ?

Als je het hele menu 100 veel sneller wil maken kun je ook nog iets anders doen.
Maar dat heeft wel een ander nadeel.
Je kunt gaan tellen van 1 naar 3 in menu 100.
Als je dan bij 1 Tin binnenhaalt, bij 2 Tkw en bij 3 Temp, dan loopt menu 100 dus 3 keer zo snel.
Het nadeel is dan dat alle temperaturen niet tegelijk met de anderen ververst worden (maar wel bijna even snel als voorheen omdat de vertragende factor dus het binnenhalen is).
« Last Edit: May 03, 2014, 04:43:41 pm by MAS3 » Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

het is verschillend minimaal halve sec soms 1 seconden voordat hij terug gaat.

je bedoelt met middenstand dan bv
5 slagen (is een 10 turns )
en de naaldkraan ook op de helft openzetten?
dat was mijn bedoeling eindelijk.

aan de ene kant is het wel goed eindelijk
dat je niet gelijk terug gaat anders kun je het distilleren onderbreken als je per ongelijk de verkeerde
toets aanraakt.
waarschijndelijk is het beter om het zo te maken dat hij 1 sec controleerd dat je de toets inhoud.
Dan is gelijk dit probleem naar profesioneel  opgelost haha
Logged

The Netherlands
Offline Offline
Edison Member
*
Karma: 49
Posts: 1625
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De stand van de kraan had ik niet zo over nagedacht maar das inderdaad wel een goed idee.
Dus beiden in de middenstand te zetten, potmeter zo rond 5 slagen en de kraan 1.75 slag.
Heel exact hoeft de potmeter nou ook weer niet op nul te staan.
Maar als je nou juist wel heel exact wil weten in welke stand je kraan staat, dan zou je de potmeter juist zoveel mogelijk slagen moeten laten maken.
Dus dan toch een overbrenging van 2:1 (7 slagen) of 2.5:1 (8.75 slagen), waardoor je het bereik van de potmeter en de analoge ingang optimaal gebruikt.

Je kan niet helemaal zeggen dat je door niets te veranderen minimaal 1 seconde op ESC moet drukken.
Je drukt dan namelijk nog steeds tot dat de eerste keer gezien word, en niemand die weet of je dan 0.1 of 1.3 seconde moet drukken.
Dat weet je pas als je 'm 2 keer gezien hebt en hebt bijgehouden hoeveel tijd er verstreken is.
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hier wat foto's van de behuizing.
Deze begint nu ook al een beetje vorm te krijgen.








gr Rolf
Logged

The Netherlands
Offline Offline
Edison Member
*
Karma: 49
Posts: 1625
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hoi Rolf.

Wat veel aansluitingen aan je kast.
Wel mooi strak gemaakt.
Boutje / moertje, want alle sleufjes in de boutjes zitten mooi recht in dezelfde stand, ziet er netjes uit.

Ik zie 2 voedingsstekkers met aarde, plus nog 3 stekkers zonder aarde, 4 tulpstekkers en een seriële poort stekker (9 polig sub-D male).
Die voedingsaansluitingen zijn toch niet allemaal als voedingsingang bedoeld, of wel ?
Wanneer ze niet voor 230 volt voeding worden gebruikt, is het eigenlijk niet zo'n goed idee deze connectoren er voor te gebruiken.
Dat omdat iemand op het idee zou kunnen komen er een stekker in te stoppen waar 230 volt op staat.
Natuurlijk ga je nu zeggen dat jij de enige bent die het ding gaat gebruiken en dat je dan weet dat je dat niet moet doen, maar toch is het niet zo'n goed idee.

Wanneer die 3 niet geaarde 230 volt stekkers (met die 8 vorm) voor iets anders bedoeld zijn, moet je er rekening mee houden dat de pennen er van (per ongeluk) aangeraakt kunnen worden.
Dus moet je er dan voor zorgen dat wanneer er een spanning uit de kast op komt te staan, deze lager dan 50 volt is.
Dat geldt ook voor die geaarde stekkers, als een er van een 230 volt uitgang is (voor je verwarmingselement), dan moet je er voor zorgen dat de spanningsvoerende delen nooit aangeraakt kunnen worden.
Daarom zou je daarvoor de tegenhanger van die stekker moeten gebruiken, je zou er eentje uit een heel oude computervoeding kunnen slopen (die hadden zo'n uitgang voor de monitor).

Ik neem aan dat de tulpstekkers voor de temperatuursensoren zijn (dan blijft er eentje over) ?
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De 4 jackpluggen zijn inderdaad voor de sensoren.
Dit zijn geen tulp omdat ik stekkers moest hebben met 3 polen.
Voor de temp sensoren.
De twee 220v met aarde zijn twee uitgangen.
Dit zijn de vrouwelijke uitvoeringen.
Deze kun je dan inderdaad niet aanraken.
1 is er voor de voeding van de waterpomp (koeling)
1 is er voor de verwarmings element.
De 3 220 uitgangen worden 12v uitgangen.
Deze worden voor het bedienen van de drie magneet kleppen.
Hier wou ik andere voor hebben maar niet echt kunnen vinden.
Inderdaad kunnen ze hier 220 volt op zetten.
Meschien beveiligen met een diode?
De sub d is voor de stappenmotor en terug koppeling van de potmeter.
Daar heb ik nu 9 polen voor.
Er komt nog een usb ingang in voor het programmeren.
En de 220 mannelijke ingang nog voor de voeding van het geheel.
Ook nog een zekering houder.
Logged

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik zie dat er in het instel menu nog een verandering moet komen.
Dit ben ik eindelijk vergeten.
Ik kan daar waardes kiezen en met ok bevestigen.
Als ik dan terug ga en weer terug naar waar ik de waarde heb gekozen staat er geen waarde
meer afgebeeld in het lcd scherm.
Ook als ik nu reset of de stroom er van af haal.
Gaat hij weer naar de waardes die ik daarvoor heb ingesteld in het programma

Code:
float TempV=78.5;                                                   // Hier word TempV niet alleen aangemaakt, maar ook gelijk met een beginwaarde gevuld
float TempE=99.00;                                                  // Hier word TempE niet alleen aangemaakt, maar ook gelijk met een beginwaarde gevuld
float TempT=00.30;                                                  // Hier word TempT niet alleen aangemaakt, maar ook gelijk met een beginwaarde gevuld

Wat ik echter wil zien is dat de gekozen temperatuur zichtbaar blijft.
En als de stroom of gereset word dat de laatst gekozen waarde blijft staan daar.
Ik wil namelijk menu optie 6 terug naar fabrieks instellingen dan gebruiken om de hierboven getoonde code
Weer terug te zetten

hoop dat dit verhaal een beetje duidelijk is.

Logged

netherlands
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Als ik bv dit stukje code bekijk:

Code:
if (mm ==6)                                                      // Zitten we in menu mode 6 ?
  {                                                                 // 6; We gaan het menu afbeelden
    lcd.clear();
    lcd.setCursor(0,0);                                             // Zet de cursor op de eerste regel op de eerste positie
    lcd.print("VOORLOOP TEMPERATUUR");
    lcd.setCursor(1,1);                                             // Zet de cursor op de tweede regel op de tweede positie.
    lcd.print("    INSTELLEN:");
    lcd.setCursor(1,2);                                             // Zet de cursor op de derde regel op de tweede positie.
    lcd.print("          ");                                        // Zet een testtekst neer
    lcd.print((char)223);                                           //Print het graden symbooltje
    lcd.print("C");
    lcd.setCursor(0,3);                                             // Zet de cursor op de vierde regel op de eerste positie
    lcd.print("<Esc>   <+/->   <OK>");                              // Zet de tekst neer: "Press<OK>"
    nieuwWaarde=TempV;                                              // We gaan de waarde van TempV bewerken en daarom nu naar het "werkgeheugen" kopieren, deze regel moet je dus niet verwijderen
     // deze regel heb ik verwijderd anders staat er 0.00 ipv 87.5  // We hebben ons bedacht en willen de nieuwe waarde niet gebruiken.Daarom word deze eerst terug gezet naar de al aanwezige waarde (anders gaat het de volgende keer fout). 
   mm = 7;
  }                                                                 // Einde 6; het scherm voor menu mode 7 is gemaakt, en we hebben al doorgeschakeld naar mode 7
  if (mm ==7)
  {
  if (nieuwWaarde != oudWaarde)
  {                                                                 //Dit word dus alleen uitgevoerd als er iets veranderd is
    lcd.setCursor(1,2);                                             // Zet de cursor op de derde regel op de tweede positie.
    lcd.print("         ");                                         // Wis oude waarde
    lcd.setCursor(6,2);                                             // Zet de cursor op de derde regel op de zevende positie.
    lcd.print(nieuwWaarde);                                         // Dusss..
    oudWaarde=nieuwWaarde;
  }
  if (KeyDet){                                                      // Het volgende word uitgevoerd omdat we een nieuwe toets hebben gezien, anders overgeslagen
  KeyDet = 0;
  if (key ==Esc) {                                                  // Wanneer toets (3) "Esc" werd geduwd
  Item = 1;                                                         // Zet Item terug, anders zouden we per ongeluk het menu de voelgnde keer op de verkeerde plaats binnenkomen en er gelijk weer uit raken voor we er goed en wel in zijn.
  mm = 4;                                                           // Zet menu mode 1 menu terug zodat we het volgende "rondje" dit menu hebben verlaten
        }                                                           // Sluit Instellingen Esc
 if (key ==Omhoog) {                                                // Wanneer toets Omhoog werd geduwd
     nieuwWaarde = nieuwWaarde +0.5;                                // nieuwWaarde wordt niuewWaarde met 0.5 graden verhoogd
 if ((nieuwWaarde)==80.50) nieuwWaarde=80.00;                       // Waneer nieuwWaarde 80.50 is zetten we hem terug naar 80   
        }                                                           // Sluit Instellingen Omhoog
 if (key ==Omlaag) {                                                // Wanneer toets Omlaag werd geduwd
     nieuwWaarde = nieuwWaarde -0.5;                                // nieuwWaarde wordt nieuwWaarde met 0.5 graden verlaagd
 if ((nieuwWaarde)==74.50) nieuwWaarde=75.00;                       // Waneer nieuwWaarde 74.50 is zetten we hem terug naar 75     
        }                                                           // Sluit Instellingen Omhoog
 if (key ==OK) {                                                    // Wanneer toets OK werd geduwd
 TempV = nieuwWaarde;                                               // TempV word dan de waarde van nieuwWaarde
 mm = 4;                                                            // Zet menu mode 1 menu terug zodat we het volgende "rondje" dit menu hebben verlaten
        }                                                           // Sluit Instellingen OK
     }                                                              // -- Sluit KeyDet --
  }                                                                 // -- Sluit mm 7 -- 
                                                                    // Vanuit mm 7 kunnen we alleen terug naar mm 4 en 5, we kunnen niet verder naar mm 8, dat kan alleen vanuit mm 4
                                                                       

en ik haal deze regel weg

Code:
oudWaarde=nieuwWaarde;

Dan blijft hij de gekozen waarde wel weergeven als ik door het instel menu blader.
Alleen word deze wel weer terug gezet na een reset of zonder stroom.

Logged

The Netherlands
Offline Offline
Edison Member
*
Karma: 49
Posts: 1625
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eerst de waarde die je kwijt raakt tijdens het instellen.
Dit is erg vreemd.
Want je haalt eerst de waarde op die je gaat bewerken:
Code:
    nieuwWaarde=TempV;
Als je klaar bent met bewerken, en dus op enter drukt, dan sla je die bewerkte waarde weer op in TempV:
Code:
TempV = nieuwWaarde;
Zo snel kan ik even niets zien waardoor dat fout zou gaan.
Daarom moet je maar eens kijken waar TempV nog meer voorkomt.
Word die niet toevallig ergens anders gereset ?
(Behalve in of voor Setup() )
Kijk ook even of je TempV wel kunt gebruiken met waardes zoals 70.5, want een int kun je niet instellen met halve waardes.

Dan het resetten.
Als je reset, worden alle waarden gewist, daar is zo'n reset ook voor.
Dat gebeurt ook als de spanning er af is geweest.
Als je dat wil voorkomen, dan moet je de waardes waar je mee werkt opslaan op een plaats die niet beïnvloed word door zo'n reset.
Daarmee bedoel ik dan een extra onderdeel, te weten een EEPROM (meestal via I2C, maar ze zijn er ook in SPI varianten).
Je hebt maar een vrij klein geheugen nodig hiervoor want heel veel gegevens hoef je nou ook weer niet op te slaan.
Tijdens Setup() lees je dan die waardes uit de EEPROM, en zo ben je dan een reset of een spanningsonderbreking te slim af.
Het aantal malen dat zo'n geheugen beschreven kan worden is beperkt (heb vaker horen zeggen dat dat zo'n 1000 maal kan, maar weet dat niet uit ervaring).
Daarom moet je natuurlijk alleen schrijven als je iets gaat opslaan met de enter toets, niet tijdens het veranderen want anders ben je er na 3 keer instellen alweer doorheen.
Ik stel voor dat je nu eerst de rest aan het werken krijgt, en daarna pas gaat kijken naar een dergelijke oplossing.
Logged

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Pages: 1 ... 10 11 [12] 13   Go Up
Jump to: