Jump to content
  • sanniesshop-banner.gif.d86ea02547aa126c899b25f607244aaf.gif sanniesseeds instagram

Wietefras

Je kweek automatiseren met Arduino

Recommended Posts

Dat ziet er goed uit man.

 

Dat zijn inderdaad ook handige behuizingen. Lekker goedkoop en er past prima zo'n klein Arduino bordje in. Ik heb voor mijn waterniveau systeempje ook zo'n bakje gebruikt.

  • Like 2

Share this post


Link to post
Share on other sites

Vandaag weer even bezig met de Arduino.

Dit keer een tijdschakelaar in elkaar zetten.

Enkel de code geeft wat problemen.

Ik wil de tijd schakelen tussen 18.00 en 06.00, enkel heb ik geen idee hoe ik dat kan doen.

 

 buttonState = digitalRead(buttonPin);
 buttonState1 = digitalRead(buttonPin1);


{
 displayTime(); // display the real-time clock data on the Serial Monitor,
 delay(1000); // every second

 byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
 // retrieve data from DS3231
 readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
 &year);

 //
 // kijk of de tijd in gewenste interval is
 //
 uint16_t maxTijd = 600;
 uint16_t minTijd = 1800;
 uint16_t maxTijd2 = 1200;
 //
 // bereken huidige tijd als gewoon getal. Maakt het eenvoudiger om te testen
 //
 uint16_t huidigeTijd = hour * 100 + minute;

 if (huidigeTijd >= minTijd && huidigeTijd <= maxTijd && buttonState == HIGH){ {
   digitalWrite(Light, HIGH);
 }
 } else if (huidigeTijd >= minTijd && huidigeTijd <= maxTijd2 && buttonState1 == HIGH){
   digitalWrite(Light, HIGH);
 }
 else {
   digitalWrite(Light, LOW);

} 

 

Zo zou het normaliter moeten werken, enkel werkt het zo niet als je van de dag naar de nacht gaat, dan klopt de telling niet meer en dus de statements niet.

Ik heb het internet voor zover mogelijk afgezocht, maar blijkbaar ben ik de enige met dit probleem.

Iemand een oplossing hiervoor?

Share this post


Link to post
Share on other sites

@Bosrand, hier een stukje code dat ikzelf gebruik (post #25)

Waarom doe je uren * 100? Een uur heeft toch 60 minuten?

 

Cabis

Share this post


Link to post
Share on other sites

@Cabis, Keer 100 omdat dat makkelijker leesbaar is lijkt me. 1200 is dan 12 uur. Maakt verder voor het verhaal niet uit.

 

:edit: domme vraag verwijderd :)

 

@Bosrand, Cabis doet feitelijk hetzelfde als wat ik je net via PM vertelde. Alleen doet hij het in een variabele (driverSTATE) en ik verving in jouw voorbeeld de "HIGH" en "LOW" door een boolean expressie die wisselt afhankelijk van of de starttijd kleiner is dan de eindtijd of niet.

 

#define uitTijd 2200
#define aanTijd 1000
#define huidigeTijd (hour * 100 + minute)
...

if (min(aanTijd,uitTijd) <= huidigeTijd && huidigeTijd < max(aanTijd,uitTijd)) {
   digitalWrite(Light, aanTijd < uitTijd);
} else {
   digitalWrite(Light, aanTijd > uitTijd);
}

Edited by Wietefras
  • Like 1

Share this post


Link to post
Share on other sites

@Wietefras, ik wou net een verhaal ophangen over een speciaal kweekschema ;)

 

@Bosrand:


  	 boolean driverSTATE =  ((aanTijd < uitTijd &&  huidigeTijd >= aanTijd && huidigeTijd < uitTijd)
						 || (aanTijd > uitTijd && (huidigeTijd >= aanTijd || huidigeTijd < uitTijd)));

	digitalWrite(Light, driverSTATE);
	
	Of
	
	if ((aanTijd < uitTijd &&  huidigeTijd >= aanTijd && huidigeTijd < uitTijd)
		|| (aanTijd > uitTijd && (huidigeTijd >= aanTijd || huidigeTijd < uitTijd))) {
		
		digitalWrite(Light, HIGH);
	} else {
		digitalWrite(Light, LOW);
	}

 

Edit: Grafiekje

gallery_17791_18451_43259.jpg

  • Like 2

Share this post


Link to post
Share on other sites

Hmm, het kan aan mij liggen, maar ik zie niet in waarom het daarmee wel gaat werken.

 

Ook snap ik het stukje code wat je laat zien niet echt, wat gebeurd er als je schrijft:

 digitalWrite(Light, aanTijd > uitTijd);

Daarnaast, als de maxtijd, dus de tijd dat de lamp uit moet gaan, op 6.00 ligt en de aantijd op 18.00, dan is huidige tijd toch nog steeds na middernacht lager dan de maxtijd?

 

 

De code van Cabis kan ik niet vinden wat er voor zorgt dat de lamp uit of aan schakelt op tijd.

Ik doe x100 omdat iemand dat voor me bedacht heeft, x60 zou ook kunnen, maakt in principe niet zoveel uit.

 

 

Nog even een stukje uit een pb van Wietefras:

if ( aanTijd <= huidigeTijd || huidigeTijd < uitTijd) {

  digitalWrite(light, HIGH);

 

Dit stukje lijkt me wel te werken, al lukt het me even niet om duidelijk te zien wat er nu gebeurd.

 

Dus het stukje om de lampen aan en uit te schakelen gaat worden:

 uint16_t maxTijd = 600;
 uint16_t minTijd = 1800;
 uint16_t maxTijd2 = 1200;
 //
 // bereken huidige tijd als gewoon getal. Maakt het eenvoudiger om te testen
 //
 uint16_t huidigeTijd = hour * 100 + minute;

 if (huidigeTijd <= minTijd || huidigeTijd < maxTijd && buttonState == HIGH){ {
   digitalWrite(Light, HIGH);
 }
 } else if (huidigeTijd <= minTijd || huidigeTijd < maxTijd2 && buttonState1 == HIGH){
   digitalWrite(Light, HIGH);
 }
 else {
   digitalWrite(Light, LOW);

}

 

Zo zou het dus moeten werken?

Ik heb het idee dat er iets nog niet aan klopt.

De buttonState is een schakelaar die er voor moet zorgen dat ik kan schakelen tussen 12-12 en 18-6.

 

 

Ik zie dat Cabis net wat gepost heeft, ik zal het straks allemaal nog eens door lopen, misschien dat het dan wat duidelijker word.

Share this post


Link to post
Share on other sites

Je moet anders even wat voorbeeldje nemen en dan de uitkomsten zien. Het werkt echt.

 

De truc is:

- als de lamp van 1000 tot 2200 aan moet dan moet dus de lamp aan als de tijd tussen 10:00 en 22:00 ligt.

- als je de lamp tussen 2200 en 1000 aan wil hebben dan moet de lamp dus aan als de tijd juist NIET tussen 10:00 en 22:00 ligt.

 

De conditie blijft hetzelfde, alleen de schakelaar "draai je om".

 

Dat omdraaien van de schakelaar doe ik door in plaats van HIGH en LOW te kijken of de inschakel tijd kleiner is dan de uitschakel tijd of niet.

 

 

Je kunt de defines voor de aan en uitschakeltijden ook vervangen door een conditionele define. Ik heb nu de groei van 7:00 tot 1:00 en de bloei van 10:00 tot 22:00 erin gezet. Heb niet gekeken hoe je schakelaar werkt, maar ben maar even uitgegaan van HIGH is groei. Anders kun je dat simpel omdraaien uiteraard.

 

Ik werk liever met defines of functies dan dat ik dat allemaal uit programmeer in de statements zelf.

 

// Als buttonstate1==HIGH dan groei anders bloei
#define aanTijd ((buttonstate1==HIGH)?700:1000)
#define uitTijd ((buttonstate1==HIGH)?100:2200)
#define huidigeTijd (hour * 100 + minute)
...
if (min(aanTijd,uitTijd) <= huidigeTijd && huidigeTijd < max(aanTijd,uitTijd)) {
   digitalWrite(Light, aanTijd < uitTijd);
} else {
   digitalWrite(Light, aanTijd > uitTijd);
}

Share this post


Link to post
Share on other sites

Ik werk met tijdstippen, in minuten, waarop het licht aan moet gaan en weer uit, dus niet het aantal uren.

 

Als ik een button (switch) zou gebruiken:

 

 

if (switch_Points_To_Veg) {

aanTijd = 1080; // is dus 18:00 uur (18*60min)

uitTijd = 360; // is dus 06:00 uur (6*60mni)

else // switch points to Flowering

aanTijd = 1200; // is dus 20:00 uur (20*60min)

uitTijd = 480; // is dus 08:00 uur (8*60mni)

endif

 

Anders loop je het risico dat je straks met heel veel && (and) en || (or) eindigd want je wilt ook vast dat de lampen uitblijven als de tempsensor ze te warm vindt of dat dat ultrasoon ziet dat de plant tegen de lamp groeid.

 

Cabis

Share this post


Link to post
Share on other sites

Hoge temperatuur of plant tegen de lamp is simpelweg een extra if statement wat voorang heeft op de tijden:

 

if ("ellende of net ellende gehad") {

digitalWrite(Light, LOW);

} else {

... gewone tijd schakeling

}

 

 

Het voordeel van die minuten zie ik niet? De code die Bosrand gaf is toch een stuk beter te lezen? Ik zie liever 1830 staan voor 18:30 dan 1110 (18*60min+30min). Voor de werking van de code maakt het verder niets uit.

Share this post


Link to post
Share on other sites

Bij mij is het in de eerste instantie om hps te schakelen, dus heb ik nog niet te maken met verdere beveiligingen.

Enkel is het wel de bedoeling het te gaan gebruiken in het moederhokje in combinatie met led.

 

(min(aanTijd,uitTijd)

Wat gebeurd er daar?

Wat doet min, is dat minimaal of iets dergelijks?

Waarom aan en uit tijd beide, of moet ik een van beide gebruiken afhankelijk van de schakeling?

 

Ik vind x100 ook handiger lezen, maar verder maakt het inderdaad niets uit.

 

@ Cabis:

 


  	 boolean driverSTATE =  ((aanTijd < uitTijd &&  huidigeTijd >= aanTijd && huidigeTijd < uitTijd)
						 || (aanTijd > uitTijd && (huidigeTijd >= aanTijd || huidigeTijd < uitTijd)));

	digitalWrite(Light, driverSTATE);
	
	Of
	
	if ((aanTijd < uitTijd &&  huidigeTijd >= aanTijd && huidigeTijd < uitTijd)
		|| (aanTijd > uitTijd && (huidigeTijd >= aanTijd || huidigeTijd < uitTijd))) {
		
		digitalWrite(Light, HIGH);
	} else {
		digitalWrite(Light, LOW);
	}

 

De aanTijd zal nooit kleiner zijn dan uitTijd toch?

Dus het eerste statement kan wel weg, of in ieder geval het eerste gedeelte ervan.

Volgens mij klopt het dan nog niet.

  uint16_t uitTijd = 600;
 uint16_t aanTijd = 1800;
 uint16_t uitTijd2 = 1200;
 //
 // bereken huidige tijd als gewoon getal. Maakt het eenvoudiger om te testen
 //
 uint16_t huidigeTijd = hour * 100 + minute;


	  if ((huidigeTijd >= aanTijd && huidigeTijd > uitTijd) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd))

 

Ik heb het nog eens een paar keer door gelopen.

Zo zou het moeten werken toch?

Enkel de schakelaar nog even erbij in de statements zetten.

Edited by bosrand

Share this post


Link to post
Share on other sites

Inmiddels zou het nu goed moeten werken volgens mij.

  uint16_t uitTijd = 600;
 uint16_t aanTijd = 1800;
 uint16_t uitTijd2 = 1200;
 //
 // bereken huidige tijd als gewoon getal. Maakt het eenvoudiger om te testen
 //
 uint16_t huidigeTijd = hour * 100 + minute;


 if ((huidigeTijd >= aanTijd && huidigeTijd > uitTijd && buttonState == HIGH) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd && buttonState == HIGH)){

digitalWrite(Light, HIGH);
 }
  else if ((huidigeTijd >= aanTijd && huidigeTijd > uitTijd2 && buttonState1 == HIGH) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd2 && buttonState1 == HIGH)){
digitalWrite(Light, HIGH);
 }
 else {
digitalWrite(Light, LOW);

} 

 

Ik heb even wat foto's gemaakt van het doosje met de "tijdschakelaar".

gallery_32929_17148_39853.jpg

 

Relais uitgang.

gallery_32929_17148_186848.jpg

 

De schakelaar om tussen 12-12 en 18-6 te schakelen en voedingsingang.

gallery_32929_17148_756363.jpg

 

De DS3231 met een Arduino Nano en een Buck converter om de inkomende spanning te verlagen naar 5 volt.

Ik heb laatst eens 12 volt op een Nano gezet, maar blijkbaar kon die voltage regelaar van de Nano dat niet aan, daarom zet ik nu maar elke keer zo'n Buck converter er tussen.

gallery_32929_17148_261812.jpg

Edited by bosrand
  • Like 1

Share this post


Link to post
Share on other sites

(min(aanTijd,uitTijd)

Wat gebeurd er daar?

Wat doet min, is dat minimaal of iets dergelijks?

Waarom aan en uit tijd beide, of moet ik een van beide gebruiken afhankelijk van de schakeling?

Ik gebruik die min en max om altijd te kijken of de tijd tussen de kleinste en de grootste waarde ligt.

 

Dus ongeacht of aan=1000 en uit=2200 of dat het aan=2200 en uit=1000 is, de kleinste komt altijd uit de "min" en de grootste uit de "max". Of de start tijd dan kleiner is dan de uit tijd (eerste voorbeeld) of niet bepaald of de lamp aan moet als de tijd tussen de min en max ligt of juist niet.

 

Je kunt echt het beste wat voorbeelden door rekenen om te zien of en hoe het werkt.

 

 

De aanTijd zal nooit kleiner zijn dan uitTijd toch?
Dat dat kan gebeuren was toch juist het punt van je vraag?

 

Het eerste deel van de expressie is voor als de lamp van 1000 tot 2200 draait en het tweede deel voor als de lamp van 2200 tot 1000 draait. Ik gebruik de min en max om hetzelfde te bereiken.

 

 

Die code van jou lijkt me prima inderdaad.

 

Al zou ik het zelf liever wat leesbaarder maken door eerst de aan en uit tijden te bepalen afhankelijk van de schakelaar en dan te kijken of de tijd daartussen valt

 

Dus zo:

 uint16_t uitTijd;
 uint16_t aanTijd;

 //
 // bereken huidige tijd als gewoon getal. Maakt het eenvoudiger om te testen
 //
 uint16_t huidigeTijd = hour * 100 + minute;

 // bepaal welke tijden gebruikt moeten worden
 if (buttonState == HIGH) {
    aanTijd=1800;
    uitTijd=600;
 } else {
    aanTijd=1800;
    uitTijd=1200;
 }

 if ((huidigeTijd >= aanTijd && huidigeTijd > uitTijd) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd)){
       digitalWrite(Light, HIGH);
 }
 else {
       digitalWrite(Light, LOW);

 

Al zou ik bij overgang van groei naar bloei de tijd van bloei naar groei aan beide kanten 3 uur donker toevoegen. Dus aanTijd=1500 en uitTijd=900 in plaats van aanTijd=1800 en uitTijd=1200. Mar goed, dat maakt voor de code verder ook niet uit. Al is dat wel makkelijker aan te passen als je met variabelen werkt dan als je met complexe boolean expressies werkt in de if-statements.

 

Als je zeker wilt weten of iets werkt kun je het beste de mogelijke invoer waardes proberen. Dan kom ik hier op uit:

Tijd          buttonstate=LOW             buttonstate=HIGH
0            HIGH          HIGH
100          HIGH          HIGH
200          HIGH          HIGH
300          HIGH          HIGH
400          HIGH          HIGH
500          HIGH          HIGH
600          HIGH          LOW
700          HIGH          LOW
800          HIGH          LOW
900          HIGH          LOW
1000         HIGH          LOW
1100         HIGH          LOW
1200         LOW           LOW
1300         LOW           LOW
1400         LOW           LOW
1500         LOW           LOW
1600         LOW           LOW
1700         LOW           LOW
1800         HIGH          HIGH
1900         HIGH          HIGH
2000         HIGH          HIGH
2100         HIGH          HIGH
2200         HIGH          HIGH
2300         HIGH          HIGH
2400         HIGH          HIGH

 

Dat lijkt me wel de bedoeling ook.

 

Leuk gedaan dat kastje zo. Handig met die schakelaar ook.

  • Like 1

Share this post


Link to post
Share on other sites

Sorry, zat net nog te denken, maar jouw code heeft nog steeds het probleem erin waar het allemaal mee begon.

 

Als je de overdag draait en starttijd kleiner is dan begintijd hebt gaat het nog steeds fout. Dus jouw voorbeeld werkt nu wel, maar als je overdag wil draaien dan werkt het zo niet.

 

Je kunt dan simpelweg de DigitalWrite LOW en HIGH omwisselen, of de truc gebruken die ik gaf. Dus niet LOW en HIGH gebruiken maar een boolean expressie die mee wisselt als je 's nachts of overdag draait.

 

Deze expressie:

((huidigeTijd >= aanTijd && huidigeTijd > uitTijd) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd))

 

doet in de praktijk hetzelfde als deze expressie:

(min(aanTijd,uitTijd) <= huidigeTijd && huidigeTijd < max(aanTijd,uitTijd))

 

Alleen dan "omgekeerd'. Dus jouw expressie kijkt of de tijd ligt buiten het interval dat binnen de dag ligt en mijn expressie kijkt of het er tussen ligt. Komt op hetzelfde neer alleen wissel je dan de HIGH en LOW bij de DigitalWrite voor de lamp om.

 

Niet om te mierenneuken :) , maar ik zou jouw expressie ook aanpassen naar:

((huidigeTijd >= aanTijd && huidigeTijd >= uitTijd) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd))

 

Dan schakelt de lamp altijd op de minuut die je wilt en niet bij het uitgaan een minuut later. Maakt in de praktijk natuurlijk niets uit, maar als je om 18:00 kijkt of je lamp uit is en die gaat pas om 18:01 uit dan is dat toch verwarrend.

 

Alles samen genomen, als je wil dat het altijd werkt dan zou het dus zoiets moeten worden:

 uint16_t uitTijd;
 uint16_t aanTijd;
 //
 // bereken huidige tijd als gewoon getal. Maakt het eenvoudiger om te testen
 //
 uint16_t huidigeTijd = hour * 100 + minute;  // bepaal welke tijden gebruikt moeten worden
 if (buttonState == HIGH) {
    aanTijd=1800;
    uitTijd=600;
 } else {
    aanTijd=1800;
    uitTijd=1200;
 }
 if ((huidigeTijd >= aanTijd && huidigeTijd >= uitTijd) || (huidigeTijd < aanTijd && huidigeTijd < uitTijd)){
    digitalWrite(Light, aanTijd > uitTijd);
 }
 else {
    digitalWrite(Light, aanTijd < uitTijd);
 }

Edited by Wietefras

Share this post


Link to post
Share on other sites

De aan en uit tijden zijn vaststaande tijden, dus dat kan nooit veranderen ten opzichte van elkaar toch.

 

Hoe kom je aan zo'n "tabel" van high en low?

 

Mijn code heeft nu toch geen probleem meer?

Het draait goed voor zover ik kan zien.

Bij het overdag draaien zal de code iets veranderd moeten worden, maar dat is voor over een tijdje.

Deze "tijdschakelaar" gaat nu gebruikt worden voor het hokje met hps te schakelen dat in de avond/nacht draait.

 

 

(min(aanTijd,uitTijd) <= huidigeTijd && huidigeTijd < max(aanTijd,uitTijd))

Ik geloof dat ik bovenstaande code een beetje begin te begrijpen.

Share this post


Link to post
Share on other sites

De aan en uit tijden zijn nu wel vast ingeprogrammeerd ja, maar als je later besluit om overdag te gaan draaien en de tijden aan te passen dan gaat het mis. Dan zou ik zelf liever mijn code robuust genoeg hebben dat het gewoon altijd werkt. Al merk je natuurlijk snel genoeg dat je lamp uit gaat in plaats van dat die aan gaat (en andersom) op de schakeltijden.

 

Ik dacht dat je zelf in eerste instantie dat ook bestempelde als een potentieel probleem, maar dat zal ik dan wel verkeerd begrepen hebben.

 

Die HIGH en LOW tabellen heb ik gemaakt door met een for loop de code even aan te roepen met wat voorbeelden en dan de uitkomst te printen. Je kan het uiteraard ook met de hand uitrekenen.

Edited by Wietefras

Share this post


Link to post
Share on other sites

Ohh op die manier, daar zit wel wat in ja.

 

Ik had meer het probleem met het aanblijven van de lamp als het 12uur 's nachts geweest is, dat is in ieder geval opgelost.

Ik denk ook niet dat het snel zal gebeuren dat ik wil schakelen naar overdag draaien met deze controller.

Tenminste, als ik zie hoe het de afgelopen rondjes gegaan is, dan zit daar weinig verandering in en draait het hokje altijd op dezelfde tijd zo ongeveer.

Share this post


Link to post
Share on other sites

Ah dan had ik het inderdaad verkeerd begrepen.

 

Het is wel makkelijker om altijd hetzelfde aan te houden ja. Ben zelf nu helemaal in de war door die wintertijd overgang :)

 

's winters zou je ook om en om kunnen draaien met twee hokjes zodat je zowel overdag als 's nachts wat warmte van de lampen hebt waarmee je de boel aan de "donker" kant kan verwarmen. Dat lijkt me qua afzuigen dan alleen wel een stuk complexer allemaal dan gewoon beide tenten tegelijk met dezelfde afzuiger doen.

Edited by Wietefras
  • Like 1

Share this post


Link to post
Share on other sites

@Bosrand, "... Ik heb laatst eens 12 volt op een Nano gezet ..."

Waarom gebruik je niet een oude PC voeding, die hebben 12V, 5V en vaak ook nog 3V3 van goede kwaliteit.

Share this post


Link to post
Share on other sites

In de winter draai ik ook meestal om en om Wietefras, enkel als beide hokjes vol staan, en is dat nu niet het geval.

 

 

Omdat ik een accu heb staan Cabis, waar ik al mijn projectjes aan knoop. ;)

Daarvoor gebruikte ik voor elke Arduino een 5v usb-230v stekker als voeding, maar die dingen zijn niet te vertrouwen met sommige apparatuur.

Ik heb een paar gehad waar de transistoren van de 5v voeding uitgeklapt zijn doordat 2 tl lampjes uitschakelden die op het stopcontact ernaast zaten.

Ik gebruik er nog wel steeds 1 om mijn fancontroller van het hokje te voeden, maar die gaat binnenkort ook over op 12v van de accu.

 

Ik was nog van plan om buiten een zonnepaneeltje op een dakje neer te leggen om daarmee de accu weer op te laden, maar dat moet nog gerealiseerd worden.

 

 

Vandaag nog mijn deuropener door middel van RFID even op een printplaatje gesoldeerd en in een doosje gestopt.

Enkel werkt het nu niet meer als voorheen, hij lijkt vast te lopen, in ieder geval leest de reader de chips na ongeveer een uur niet meer, in een breadboard opstelling is het een aantal weken probleemloos verlopen, enkel was dat een Uno die rechtstreeks op 12v aangesloten was.

Misschien dat deze buck converters een beetje aan de zwakke kant zijn.

Maar eens even kijken wat er nu weer fout gegaan is, misschien ergens een condensator bij zetten om de spanning op peil te houden, of een andere Nano proberen.

Share this post


Link to post
Share on other sites

Heeft iemand zich wel een verdiept in het automatiseren met homewizard?

Ik heb dat namelijk sinds kort in huis en de mogelijkheden zijn vrijwel oneindig.

 

Share this post


Link to post
Share on other sites

Open source domotica varianten zoals nodo en domotics zijn wel langsgekomen.

Share this post


Link to post
Share on other sites

Ik heb na het vluchtig lezen van de eerste 6 pagina's ook de sprong gemaakt naar pagina 14.

Zelf ben ik een tijdje doende geweest met zoiets op een PIC controler waar ik wel de nodige ervaring mee heb.

 

Ik ben daar redelijk mee klaar maar misschien kunnen jullie me nog wat verder helpen met wat zaken.

 

Kunnen jullie een 220v motor in snelheid regelen, digitaal? Pomp of afzuiging en evt. de ventilatoren.

Dat is de grootste bug voor me.

En wat voor protocollen zijn er nodig om van die fancy controlpannels te maken op je scherm??

 

Vast wel meer vragen. Maar eerst zo.

Share this post


Link to post
Share on other sites

Is dit niet iets, AC Phase Control. Was ooit van plan dit uit te proberen en heb de onderdelen ook liggen, maar ben toch bang dat er gebrom te horen zal zijn. Volgens mij werken veel dimmers met AC Phase Control.

 

Een Frequency Controller voor de Arduino heb ik helaas nog niet kunnen vinden, dat zou natuurlijk helemaal mooi zijn.

 

Ik werkt hier zelf met twee variacs. Een eerste poging die te automatiseren, met een stappen motor, was geen groot succes, maar dat lag meer aan de montage van de motoren op de as die daardoor moeite hadden de zaak rond te draaien. Maar ooit zullen ze door de Arduino bestuurd gaan worden, want een variac is toch wel hét middel om bromvrij te dimmen.

 

Homewizard en soortgenoten zijn me te prijzig, zeker als je weet wat de componenten kosten die erin zitten.

  • Like 1

Share this post


Link to post
Share on other sites

Ik gebruik dus afzuigers die met een 0-10V signaal (of PWM) te besturen zijn. Dan hoef je geen ingewikkelde/gevaarlijke 220V stuurelectronica te maken. Die afzuigers zijn wel wat duurder, maar verbruiken ook veel minder stroom dan een conventionele afzuiger. Je sluit ze wel aan op 220V, maar de motor wordt aangestuurd met een DC voltage.

 

Voor pompen zou ik een relais gebruiken. Hooguit verder dimmen met een variac dan.

 

Wil inderdaad ook nog wel een keer een ding maken met de 3D printer zodat ik een stappenmotor of servo op een variac kan zetten.

 

Om de gegevens te tonen gebruik ik zelf een simpele website. Je kunt ook wel mooiere voorbeelden vinden waar ze met Bootstrap een soort dashboard gemaakt hebben.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...