Greek Aquarist's Boards - Φόρουμ συζητήσεων γιά το χόμπυ του Ενυδρείου

Greek Aquarist's Boards - Φόρουμ συζητήσεων γιά το χόμπυ του Ενυδρείου (http://www.aquatek.gr/vb/index.php)
-   DIY . Φτιάχτο μόνος σου (http://www.aquatek.gr/vb/forumdisplay.php?f=28)
-   -   Κατασκευή-προγραμματισμός arduino από το 0 (http://www.aquatek.gr/vb/showthread.php?t=95257)

tolisn 21-03-17 18:32

Ο κώδικας που είναι; Αν και ερασιτέχνης στον προγραμματισμό ας τον ρίξουμε μια ματιά μπας και δούμε τίποτα.

AgMa 21-03-17 19:20

http://www.megafileupload.com/26dhc/MrAqua_v2_5_1.ino
Μήπως πρέπει να αλλάξω κάτι στην συνδεσμολογία;
Το ρελέ είναι αυτό:
http://www.ebay.com/itm/400904103768...%3AMEBIDX%3AIT
Όλες οι συνδέσεις έχουν γίνει στα μπλε kf301, αλλά αν δεις αριστερά τους έχει και κάτι άλλες υποδοχές, σαν αυτές που μπαίνουν τα jumper.

tolisn 21-03-17 21:38

Τα πινσ δίπλα από τις κλέμες είναι παράλληλα συνδεμένα με τις κλέμες. Είτε στην κλέμα συνδέσεις είτε στο πινς είναι το ίδιο πράγμα.
Στα ρελε τι συνδέετε ?

AgMa 21-03-17 22:02

Προς το παρόν τίποτα. Έχω δώσει μόνο 5v, gnd και τα analog pins του arduino.
Στον κώδικα δεν βρήκες κάτι;

tolisn 21-03-17 22:13

όχι, ακόμα τίποτα, προσπαθώ να καταλάβω πως λειτουργεί.
Τα ρελέ με χαμηλή λογική τα προτείνει ο κατασκευαστής του προτζεκτ ή τα πήρες έτσι κατά λάθος?

AgMa 21-03-17 23:11

Όχι, στο project χρησιμοποιεί τα κλασσικά ρελέ που τα ορίζεις εσύ να ενεργοποιούνται είτε με high trigger είτε με low, μέσω των jumper που έχουν.

tolisn 21-03-17 23:23

Οπότε, το προτζεκτ μάλλον έχει υψηλή λογική.
Αν δεν βρούμε πως γίνεται στο πρόγραμμα τότε μπορείς να το λύσεις το πρόβλημα με ένα ολοκληρωμένο κύκλωμα αναστροφέα (not gate). Αυτό παίρνει την μία λογική και την μετατρέπει στην άλλη. Κάνει αναστροφή την είσοδο του. Είναι απλό στην σύνδεση. Ένα τέτοιο ολοκληρωμένο είναι το 7404.

dkatsariotis 22-03-17 07:18

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002604)
Σύνδεσα τα ρελέ στο arduino, αλλά δουλεύουν ανάποδα.
Όταν πατάω απ' το μενού να κλείσουν, αυτά ανοίγουν και το αντίστροφο.
Είναι low level trigger solid state.
Ψάχνω στον κώδικα μήπως βρω κάποια παράμετρο που τα ορίζει σε low (σύμφωνα με τον πωλητή, 0-2.5V low state relays ON, 3.3-5V state high relay OFF) αλλά τίποτα.
Μπορεί να βοηθήσει κάποιος;

Καλημέρα,

Το ίδιο θέμα είχα με τους δικούς μου ρελέ. Δουλεύουν ουσιαστικά με αντίστροφη πολικότητα. Η λύση απλή. Αφού δηλώσεις τα pin σου πριν το void setup() πχ:

int pwrFanPin = A6; //Cooling fan relay

μετά μέσα στο void setup() βάζεις:

pinMode(pwrFanPin, OUTPUT);
digitalWrite(pwrFanPin, HIGH);

Με αυτό το τρόπο θα αντιστρέψεις τον τρόπο λειτουργίας τους. Πλέον σε κατάσταση high το ρελέ είναι κλειστό και σε low είναι σε λειτουργία. Αυτό το κάνεις για κάθε pin που πάει στην πλακέτα με τα ρελέ. Δεν έχεις θέμα κατανάλωσης η θερμοκρασίας κλπ γιατί στο δικό μου board τουλάχιστον η λειτουργία των ρελέ καθορίζεται από optocoupler​ που έχει στην είσοδο τους.

Λόγω της ταχύτητας του Arduino η αλλαγή σε high είναι ακαριαία και δεν αντιλαμβάνεσαι τίποτα. Απλά πρόσεξε να μπουν οι εντολές πρώτες πρώτες στο void setup()

Κατόπιν στον κώδικα όπου είχες digitalWrite(pwrFanPin, HIGH); για να λειτουργήσει ο ρελέ, το κάνεις digitalWrite(pwrFanPin, LOW);

Ασφαλώς όπου pwrFanPin είναι τα αντίστοιχα δικά σου pin

Sent from my Lenovo P1ma40 using Tapatalk

tolisn 22-03-17 07:23

Σίγουρα είναι ο τελευταίος κώδικας που έβαλες στο λινκ? Σαν να λείπει όλο το τμήμα που έχει σχέση με τον χειρισμό τον ρελε. Βρίσκω αναφορά στα ρελε αλλά δεν βρίσκω που γίνεται ο χειρισμός.
Κατέβασα μια άλλη έκδοση το προγράμματος και εκεί υπάρχει και το τμήμα χειρισμού.
Εσύ μπορείς και χειρίζεσαι τα ρελε με το touch screen αλλά απλός έχουν ανάποδη λειτουργία ?

AgMa 22-03-17 11:51

Καλημέρα,
Ναι η τελευταία έκδοση είναι αλλά του MrMan. Ο δημιουργός του project το άφησε μέχρι την έκδοση 1.0.4 και το συνέχισε ο MrMan.
Ναι και εγώ απ' τα λίγα που ξέρω από κώδικα, δεν βρήκα κάπου τον χειρισμό του. Περίμενα να βρω κάτι σε στιλ analogwrite pinX, high ή low...
Ναι αν μπω στο μενού power όπου ενεργοποιείς και απενεργοποιείς κυκλοφορητή, φίλτρο κτλ. αν τα ενεργοποιήσω, σβήνει το αντίστοιχο λαμπάκι στα ρελέ.
Αν πατήσω το κουμπί που τα απενεργοποιεί όλα, ανάβουν όλα τα λαμπάκια στα ρελέ.
@ dkatsariotis δεν πατάνε σε digital αλλά σε analog, άρα θα πρέπει να γράψω analogwrite, σωστά;

dkatsariotis 22-03-17 11:54

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002694)
Καλημέρα,
Ναι η τελευταία έκδοση είναι αλλά του MrMan. Ο δημιουργός του project το άφησε μέχρι την έκδοση 1.0.4 και το συνέχισε ο MrMan.
Ναι και εγώ απ' τα λίγα που ξέρω από κώδικα, δεν βρήκα κάπου τον χειρισμό του. Περίμενα να βρω κάτι σε στιλ analogwrite pinX, high ή low...
Ναι αν μπω στο μενού power όπου ενεργοποιείς και απενεργοποιείς κυκλοφορητή, φίλτρο κτλ. αν τα ενεργοποιήσω, σβήνει το αντίστοιχο λαμπάκι στα ρελέ.
Αν πατήσω το κουμπί που τα απενεργοποιεί όλα, ανάβουν όλα τα λαμπάκια στα ρελέ.
@ dkatsariotis δεν πατάνε σε digital αλλά σε analog, άρα θα πρέπει να γράψω analogwrite, σωστά;

Ναι σωστά αν έχεις αναλογικές εισόδους θες analogwrite και αντί για high/low θες 255/0

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 12:06

Ωραία κάτι άλλο τώρα,
Όπως σωστά αναρρωτιέται και ο φίλος παραπάνω, σε ποιό σημείο του κώδικα αναφέρεται ο χειρισμός του ρελέ; Πως δηλαδή καταλαβαίνει ότι μόλις εγώ πατήσω να κλείσει το φίλτρο αυτό δίνει εντολή;
Επίσης γιατί έθεσες τη θερμοκρασία στον κώδικα που μου είπες; Επειδή θα παίρνει συνέχεια 5v;

dkatsariotis 22-03-17 12:19

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002701)
Ωραία κάτι άλλο τώρα,
Όπως σωστά αναρρωτιέται και ο φίλος παραπάνω, σε ποιό σημείο του κώδικα αναφέρεται ο χειρισμός του ρελέ; Πως δηλαδή καταλαβαίνει ότι μόλις εγώ πατήσω να κλείσει το φίλτρο αυτό δίνει εντολή;
Επίσης γιατί έθεσες τη θερμοκρασία στον κώδικα που μου είπες; Επειδή θα παίρνει συνέχεια 5v;

Απλά επειδή μόνιμα θα έχει ρεύμα η κάθε επαφή λόγω αντίστροφης λειτουργία μήπως σε προβληματίσει. Δεν γνωρίζω στον κώδικα που έχετε που πρέπει να γίνουν αλλαγές. Εγώ χρησιμοποιώ τον αρχικό κώδικα το οποίο στη συνέχεια τροποποίησα. Αν θες στείλε μου τον κώδικα να τον δω

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 12:40

Ο κώδικας είναι στο δεύτερο ποστ αυτής της σελίδας.
Τα ρελέ μου είναι solid state που απ' ότι έχω διαβάσει έχουν ένα θεματάκι με τις θερμοκρασίες (ανάλογα βέβαια και με τα αμπέρ των συσκευών που θα συνδέσεις) και κάποιοι τους βάζουν και heatsink. Ελπίζω να μην έχω θέμα...

dkatsariotis 22-03-17 13:03

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002706)
Ο κώδικας είναι στο δεύτερο ποστ αυτής της σελίδας.
Τα ρελέ μου είναι solid state που απ' ότι έχω διαβάσει έχουν ένα θεματάκι με τις θερμοκρασίες (ανάλογα βέβαια και με τα αμπέρ των συσκευών που θα συνδέσεις) και κάποιοι τους βάζουν και heatsink. Ελπίζω να μην έχω θέμα...

Το θέμα θερμοκρασίας που ανέφερα είναι για τα smd κυκλώματα της πλακέτας με τα ρελέ. Για το θέμα των ρελέ καθεαυτό δεν γνωρίζω καθώς χρησιμοποιώ κλασσικούς. Σίγουρα τα ampere παίζουν ρόλο αλλά δε νομίζω να έχεις τόσο μεγάλο θέμα αν δεν τους φτάσεις στα όριά τους

Sent from my Lenovo P1ma40 using Tapatalk
-------------------------
Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002706)
Ο κώδικας είναι στο δεύτερο ποστ αυτής της σελίδας.
Τα ρελέ μου είναι solid state που απ' ότι έχω διαβάσει έχουν ένα θεματάκι με τις θερμοκρασίες (ανάλογα βέβαια και με τα αμπέρ των συσκευών που θα συνδέσεις) και κάποιοι τους βάζουν και heatsink. Ελπίζω να μην έχω θέμα...

Επίσης τα ρελέ δηλώνονται στο:

// set all pin modes for output and inputs
pinMode(pwrLight1Pin, OUTPUT);
pinMode(pwrLight2Pin, OUTPUT);
pinMode(pwrFilterPin, OUTPUT);
pinMode(pwrCircPin, OUTPUT);
pinMode(pwrHeatPin, OUTPUT);
pinMode(pwrCO2Pin, OUTPUT);
pinMode(pwrAux2Pin, OUTPUT);
pinMode(pwrAux1Pin, OUTPUT);

Και μετά τα δηλώνεις με το analogwrite όπως ανέφερα ήδη.

Οι χειρισμοί των ρελέ γίνονται με alarms πχ:

AlarmPwrCO2_On();
AlarmPwrCO2_Off();

Τα οποία όμως δεν είναι δηλωμένα μέσα στο ino αρχείο που έχεις παραπάνω. Προφανώς υπάρχει άλλο αρχείο ή σου λείπει ολόκληρο κομμάτι κώδικα με όλα τα alarms


Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 13:05

void setup()
{
Serial.begin(9600);
Serial2.begin(9600);
Wire.begin();
delay(100);

watchdogSetup();

pinMode(48,OUTPUT);
digitalWrite(48,HIGH);

pinMode(pwrLight1Pin, OUTPUT);
analogWrite(pwrLight1Pin, 255);

Αν είναι σωστό, δεν δουλεύει...

dkatsariotis 22-03-17 13:11

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002718)
void setup()
{
Serial.begin(9600);
Serial2.begin(9600);
Wire.begin();
delay(100);

watchdogSetup();

pinMode(48,OUTPUT);
digitalWrite(48,HIGH);

pinMode(pwrLight1Pin, OUTPUT);
analogWrite(pwrLight1Pin, 255);

Αν είναι σωστό, δεν δουλεύει...

Καταρχάς τα κομμάτια που λείπουν είναι του στυλ:

void AlarmPwrCO2_On()
{
digitalWrite(pwrCO2Pin, LOW);
}

Με analogwrite στην δική σου περίπτωση

Σε αυτό που έστειλες λείπει το int pwrLight1Pin = αναλογικό pin πριν δηλώσεις όλα τα άλλα, πριν το void setup()


Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 13:14

Ναι έχετε δίκιο, δεν ανέβασα όλο τον κώδικα. Ορίστε ολοκληρωμένος:
http://www.megafileupload.com/3s8ky/alarms.ino
http://www.megafileupload.com/3s8kA/arial_bold.c
http://www.megafileupload.com/3s8kC/MrAqua_v2_5_1.ino
http://www.megafileupload.com/Kivm/Screens.ino
http://www.megafileupload.com/26dq2/Sinclair_S.c
http://www.megafileupload.com/26dq4/startups.ino
http://www.megafileupload.com/26dq6/Touch.ino

dkatsariotis 22-03-17 13:20

Στο alarms.ino λοιπόν θα βρεις αυτό που ανέφερα ώστε να αλλάξεις τη λογική όταν πατάς τα "κουμπιά" πχ:

void AlarmPwrCO2_On()
{
if((feedingActive==true)&&(feedSetting.pwrCO2==tru e))
{
preFeedPower.pwrCO2 = 1;
}else
{
digitalWrite(pwrCO2Pin, HIGH);
globalPower.pwrCO2=1;
}
//if (dispScreen==1) myFiles.load(206, 177, 24, 24, pwrCO2IconS[globalPower.pwrCO2]);
if (dispScreen==1) myFiles.load(178, 177, 24, 24, pwrCO2IconS[globalPower.pwrCO2]);//co2/heat swapped
}
void AlarmPwrCO2_Off()
{

Από ότι βλέπω όμως χρησιμοποιεί digital και όχι analog που μου ανέφερες

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 13:25

Έχεις το fritzing; Δες το σχέδιο εγκατάστασης:
http://www.megafileupload.com/26dqi/iAqua.fzz
Edit:
https://s3.postimg.cc/no6mpq5bn/bitmap.jpg

dkatsariotis 22-03-17 13:48

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002725)
Έχεις το fritzing; Δες το σχέδιο εγκατάστασης:
http://www.megafileupload.com/26dqi/iAqua.fzz
Edit:
https://s3.postimg.cc/no6mpq5bn/bitmap.jpg

Τα pin όντως συνδέονται "φυσικά" στις αναλογικές υποδοχές του Mega. Η διαχείριση τους όμως γίνονται "σαν" digital χρησιμοποιώντας τα digitalwrite

Η διαφορά του analogwrite είναι ότι παίρνει τιμές από 0-255 και έτσι πχ μπορείς να κάνεις dim σε ένα led. Στο digitalwrite έχεις μόνο low-high σαν πχ να έχεις έναν διακόπτη. Αυτό θες στη περίπτωση των ρελε

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 14:22

Ναι, δούλεψε!
void AlarmPwrLight1_On()
{
digitalWrite(pwrLight1Pin, HIGH);
globalPower.pwrLight1=1;
if (dispScreen==1) myFiles.load(178, 121, 24, 24, pwrLightIconS[globalPower.pwrLight1]);
}
void AlarmPwrLight1_Off()
{
digitalWrite(pwrLight1Pin, LOW);
globalPower.pwrLight1 = 0;
Αν αντιστρέψω τις τιμές αυτές, οπλίζει σωστά το ρελέ.
Ευχαριστώ!

dkatsariotis 22-03-17 16:37

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002748)
Ναι, δούλεψε!
void AlarmPwrLight1_On()
{
digitalWrite(pwrLight1Pin, HIGH);
globalPower.pwrLight1=1;
if (dispScreen==1) myFiles.load(178, 121, 24, 24, pwrLightIconS[globalPower.pwrLight1]);
}
void AlarmPwrLight1_Off()
{
digitalWrite(pwrLight1Pin, LOW);
globalPower.pwrLight1 = 0;
Αν αντιστρέψω τις τιμές αυτές, οπλίζει σωστά το ρελέ.
Ευχαριστώ!

Τέλεια, οπότε ακολουθείς τη λογική που είπα. Θυμήσου μόνο να τα κάνεις όλα τα pin των ρελέ high στο setup

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 17:25

Όταν λες στο setup υποθέτω αναφέρεσαι στο alarms.ino σωστά;

dkatsariotis 22-03-17 17:28

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002762)
Όταν λες στο setup υποθέτω αναφέρεσαι στο alarms.ino σωστά;

Όχι αναφέρομαι στο βασικό ino αρχείο. Αφού δηλώσεις τα pin αρκετά μετά ξεκινά το void setup(){

Εκεί μέσα πρέπει να κάνεις τα pin αυτά high με το digitalwrite​ αλλιώς όλα τα ρελέ θα είναι ενεργοποιημένα σε κάθε εκκίνηση μέχρι να κληθεί το αντίστοιχο alarm

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 18:12

Στο βασικό setup, δεν υπάρχει επιλογή που να τα ορίζει σαν low ή high, παρά μόνο σαν input ή output.
Πρέπει να τις γράψω εγώ τις εντολές όπως είπες νωρίτερα;

dkatsariotis 22-03-17 20:06

Παράθεση:

Αρχική Δημοσίευση από AgMa (Μήνυμα 1002768)
Στο βασικό setup, δεν υπάρχει επιλογή που να τα ορίζει σαν low ή high, παρά μόνο σαν input ή output.
Πρέπει να τις γράψω εγώ τις εντολές όπως είπες νωρίτερα;

Ναι όπως είπα τις βάζεις εσύ πρόσθετα. Δεν τις έχει στο αρχικό setup γιατί η πλακέτα που είχαν χρησιμοποιήσει ήταν με κανονική πολικότητα όχι reverse σαν τα δικά μας

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 22-03-17 21:58

Ααα οκ. Πρέπει να μπει ακριβώς κάτω απ' το void setup(), πριν από αυτό ή να αφήσω το serial begin να τρέξει με το θαλαμόσκυλο; (watchdog) :D και μετά;
Έχω την εντύπωση ότι το serialbegin πρέπει να είναι το πρώτο πράγμα που πρέπει να τρέξει μετά το voidsetup.

dkatsariotis 22-03-17 22:23

Το serial.begin χρειάζεται ώστε να βλέπεις τα μηνύματα που εμφανίζονται με το serial.println οπότε και μετά να ακολουθήσει δεν υπάρχει θέμα. Καλό είναι τα digitalwrite να είναι όσο το δυνατόν πιο πρώτα γίνεται ώστε μη προλάβουν τα ρελέ να μείνουν πολύ ώρα ενεργοποιημένα χωρίς λόγο

Sent from my Lenovo P1ma40 using Tapatalk

AgMa 23-03-17 00:58

Οκ έτοιμο. Όταν το βγάλω από το ρεύμα και το ξανασυνδέσω, βλέπω βέβαια ένα αστραπιαίο άναμμα όλων των ρελέ και μετά σβήνουν.
Το περίεργο όμως είναι ότι όταν το ξανασυνδέσω, δεν παραμένουν αναμμένα τα ρελέ που ήταν και όταν το έβγαλα, αλλά συνέχεια ενεργοποιούνται κάποια συγκεκριμένα.


Όλες οι ώρες είναι GMT +2. Η ώρα τώρα είναι 13:52.

Forum engine powered by : vBulletin Version 3.8.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright 2000-2016 Greek Aquarists Board

Page generated in 0,02914 seconds with 11 queries