PDA

Επιστροφή στο Forum : AC Light Control



tasos51
15-06-12, 04:02
γεια σας παιδια βρηκα αυτο το κυκλωμα και αυτον τον κωδικα και μιας που εχω ενα arduino ειπα να το δοκιμασω ... το θεμα ειναι οτι ειμαι σχετικα αρχαριος με τους μ/ε και δεν καταλαβαινω τον κωδικα , με ενδιαφερει η κατανοηση του και οχι να τον κανω μια αντιγραφη επικολληση οποτε θελω τα φωτα σας επισης θελω να μου πειτε τι ακριβως συνδεεται και που (εννοω σε ποια εισοδο-εξοδο του arduino ) ....το κυκλωματακι το εχω ετοιμο ;)
ευχαριστω

/*
AC Light Control

Ryan McLaughlin <ryanjmclaughlin@gmail.com>

The hardware consists of an Triac to act as an A/C switch and
an opto-isolator to give us a zero-crossing reference.
The software uses two interrupts to control dimming of the light.
The first is a hardware interrupt to detect the zero-cross of
the AC sine wave, the second is software based and always running
at 1/128 of the AC wave speed. After the zero-cross is detected
the function check to make sure the proper dimming level has been
reached and the light is turned on mid-wave, only providing
partial current and therefore dimming our AC load.

Thanks to http://www.andrewkilpatrick.org/blog/?page_id=445
and http://www.hoelscher-hi.de/hendrik/english/dimmer.htm

*/

#include <TimerOne.h> // Avaiable from http://www.arduino.cc/playground/Code/Timer1

volatile int i[4], j; // Variable to use as a counter
volatile boolean zero_cross[4] = {0,0,0,0}; // Boolean to store a "switch" to tell us if we have crossed zero
int AC[4] = {4,5,6,7}; // Setup the AC output pins
int ACenable[4] = {1,1,1,1}; // Enable dimming for this output
int output[4] = {0,0,0,0}; // Create output vars for Dimming level (0-128 ) 0 = on, 128 = 0ff
int dim = 0; // Dimming level (0-128 ) 0 = on, 128 = 0ff
int freqStep = 59; // Set the delay for the frequency of power (65 for 60Hz, 78 for 50Hz) per step (using 128 steps)
// freqStep may need some adjustment depending on your power the formula
// you need to us is (500000/AC_freq)/NumSteps = freqStep
// You could also write a seperate function to determine the freq

void setup() { // Begin setup
pinMode(AC[0], OUTPUT); // Set the Triac pin as output
pinMode(AC[1], OUTPUT); // Set the Triac pin as output
pinMode(AC[2], OUTPUT); // Set the Triac pin as output
pinMode(AC[3], OUTPUT); // Set the Triac pin as output

attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interupt to Pin 2 (interupt 0) for Zero Cross Detection
Timer1.initialize(freqStep); // Initialize TimerOne library for the freq we need
Timer1.attachInterrupt(output_check, freqStep); // Use the TimerOne Library to attach an interrupt
// to the function we use to check to see if it is
// the right time to fire the triac. This function
// will now run every freqStep in microseconds.
Serial.begin(9600);
} // End setup

void zero_cross_detect() { // function to be fired at the zero crossing
zero_cross[0] = 1; // set the boolean to true to tell our dimming function that a zero cross has occured
zero_cross[1] = 1;
zero_cross[2] = 1;
zero_cross[3] = 1;
} // End zero_cross_detect

void output_check() { // Function will fire the triac at the proper time

for( j=0; j<4; j++ ) { // Loop this function for each one of the outputs
if(zero_cross[j]) { // First check to make sure the zero-cross has happened else do nothing
if(i[j] >= output[j] && ACenable[j]) { // Check and see if i has accumilated to the dimming value we want
digitalWrite(AC[j], HIGH); // Fire the Triac mid-phase
delayMicroseconds(2); // Pause briefly to ensure the triac turned on
digitalWrite(AC[j], LOW); // Turn off the Triac gate (Triac will not turn off until next zero cross)
i[j]=0; // If we fired the triac, reset the counters
zero_cross[j] = 0; // Reset the zero cross detection
} else {
i[j]++; // if nothing is done incriment th counter
}
} // End zero_cross check
} // End each loop
} // End output_check function

void loop() { // Main Loop
for( int k=0; k < 128; k++ ) { // Slowly fade out all channels at the same time
output[0] = k;
output[1] = k;
output[2] = k;
output[3] = k;

Serial.print("Output Level:\t"); // Print the current output level over serial
Serial.println(output[0]);

delay(200); // Delay after each step to slow down the fade
}
}



34388

herctrap
15-06-12, 10:39
σου λείπει και το zero cross detection

να τι κάνω εγώ

http://www.pcbheaven.com/userpages/PID_Thermostat_Controller_with_bult_in_AC_dimmer/?topic=worklog

στα

int AC[4] = {
4,5,6,7}; // Setup the AC output pins

βάζεις το signal που δείχνεις στην εικόνα για το κάθε triac

και θες ένα μόνο zero cross για να ξέρεις πότε περνάς από το 0

και συνδέεις την έξοδο του στο Pin2 που είναι το interrupt 0

attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interupt to Pin 2 (interupt 0) for Zero Cross Detection

tasos51
15-06-12, 14:34
βασικα να σε ευχαριστησω για την απαντηση σου να σε ρωτησω μπορω να χρησιμοποιησω το παρακατω κομματι με το δικο μ κυκλωμα ??? και αν να εστω οτι θελω να βαλω καμια 10αρια triac αυτο το zero cross detection χρειαζεται χ10 φορες η μονο μια φορα ???
ακομα θελω να σας ρωτησω για τον κωδικα .... θελω να κανουμε μια μεταροπη ωστε τα φωτα πχ να μην ελεγχονται απο περιστροφικους διακοπτες οπως τα ειχε αυτος αλλα να δωσουμε μια μεταβλητη στο καθε καναλι και να την αλλαζει το ιδιο το προγραμμα παρακατω με το μιροτερο δυνατον βημα δημιουργωντας κατι σας μοτιβα ... με μια λεξη θελω κατι σαν φωτορυθμικο ;)
34393

herctrap
15-06-12, 15:23
1 zero cross θες
αλλά δείξε μας το κύκλωμα σου

για φωτορυθμικό με triac δες κ' αυτό

http://www.hlektronika.gr/forum/showthread.php?t=53232&p=524306&viewfull=1#post524306

έχω και pcb αν θες να το φτιάξεις ή να πάρεις όλη την κατασκευή

tasos51
15-06-12, 15:31
φιλε μ τα κυκλωματα τα εχω βαλει σε φωτογραφιες και το ενα ειναι ενα κομματι απο ενα π μου εδωσες εσυ παραπανω

picdev
15-06-12, 16:50
έχω φτιάξει και εγώ κάτι ανάλογο, με pic και mikroC,
το δουλεύω με 2 interrupt , στο ένα του zero cross κλείνω το triac και ενεργοποιώ έναν timer,μόλις υπερχειλίσει γίνεται οn το τριακ, και μετά πάλι απο την αρχή

tasos51
16-06-12, 04:46
ευχαριστω ολους σας για το ενδιαφερον σας αλλα κανεις αλλος ειχει καμια ιδεα για να βελτιωσουμε τα παραπανω? :)

herctrap
16-06-12, 08:46
φωτορυθμικό θες να φτιάξεις?

γιατί τότε θα πρέπει να διαβάσεις κάπως τον ήχο από το arduino

tasos51
16-06-12, 14:35
οχι καμια σχεση ενα απλο dimmer θελω να φτιαξω για πολλες λαμπες

tasos51
16-06-12, 17:20
Παιδιά καμία ιδέα κανεις ?

tasos51
18-06-12, 01:03
παιδια τελικα δεν εχει κανεις εμπειρια πανω σε αυτο το θεμα ? :(

picdev
18-06-12, 01:49
δεν ξέρω απο arduino , σου είπα οτι το έχω φτιάξει με zeroCross που παίρνω απο το μετασχηματιστή, και έχω τον ανάλογο κώδικα με 2 interrupt.Εσύ τι ακριβώς θες ? να σου φτιάξει κάποιος το κώδικα? σχηματικό? να δεις άλλο κώδικα?
τέλος τι γνώσεις έχεις? μπορείς να ασχοληθείς ή το θες έτοιμο ?

tasos51
18-06-12, 01:55
λοιπον ας παρουμε τα πραγματα απο την αρχη ..... αναρτησα ενα κυκλωμα το οποιο το εχω σχεδιασει επι 10 φορες ...... θελω να μ πειτε αν μπορω να χρησιμοποιησω ενα αλλο κομματι-κυκλωμα το zeroCross το οποιο επισης εχω αναρτησει παραπανω μαζι με το κυκλωμα του triac, γνωσεις ηλεκτρονικων εχω αρκετες οπως επισης και ξερω να τυπωνω πλακετες ..... θελω ομως βοηθεια στον κωδικα , ξερω οτι δεν προκειτε να καταφερω να μαθω γλωσσα μεσα απο το forum αλλα αν καταφερει καποιος να με βοηθησει με το προγραμμα θα του ειμαι υποχρεος .... ευχαριστω και παλι

picdev
18-06-12, 02:15
αυριο θα σου ανεβάσω ένα κύκλωμα για zero Cross που μου το έχει προτείνει ένα άλλο μέλος του φορουμ , και δουλεύει πολύ καλά, θα σου ανεβάσω και κώδικα σε mikroC χωρίς interrupt για πιο εύκολο για να πειραματιστείς.

tasos51
18-06-12, 02:18
με αυτον τον κωδικα μπορω να προγραματισω και το arduino που εχει ατμελ ??? :lool:

herctrap
18-06-12, 10:44
όχι

καταρχήν έχεις μετασχηματιστή στο όλο project?

θα σε βοηθήσω και εγώ με τον κώδικα

αλλά πρώτα πρέπει να αποφασίσεις πιο zero cross θα φτιάξεις

αυτό που προτείνω εγώ είναι αυτό

http://www.pcbheaven.com/userpages/images/PID_Thermostat_Controller_with_bult_in_AC_dimmer_1 .png

το πάνω

tasos51
18-06-12, 14:35
ωραια μου φαινεται πολυ ευκολο στην κατασκευη του παω να παρω τα υλικα αυριο και θα το εχω ετοιμο .... ναι θα χρησιμοποιηθει μετασχηματιστης γτ πολυ απλα μετα θα υπαρχουν και ρελε .... υποψην το project θα γινει σε arduino mega kai oxi se uno γτ δεν εχει τοσες εξοδους ...και κατι ακομα η καθε μια εξοδος για τριακ θα πρεπει να εχει pwm απο τον μ/ε ???

tasos51
19-06-12, 21:26
Φίλε μου τελικα υπάρχει απάντηση στα παραπάνω ερωτήματα ? γιατί θέλω να σχεδιασω τα κυκλώματα :001_smile:

herctrap
19-06-12, 22:37
*format - kai dn exw perasei akoma ellinika

imoun sigouros oti eixa apantisei edw

afou tha valeis m/t perimene kai to kiklwma tou picdev ( tha einai pio aplo )

arkei m/t na ennoeis ayto

34589

kai oxi auto

34590

tasos51
20-06-12, 01:05
ναι το επανω εννοω αλλα γιατι το δικο σου μου φαινεται πολυ απλο απλα ο μ/τ θα τροφοδοτει το arduino και τιποτα αλλα μαζι με τα ρελε ολα τα αλλα θα περνουν απο το δικτυο :biggrin: και το zero cross

picdev
20-06-12, 01:06
δεν το ανέβασα μην μπερδευτείς αλλά όντως το δικό μου είναι πιο απλό, περίμενε το ανεβάζω

picdev
20-06-12, 01:12
το πάνω έχω φτιάξει , πρόσεξε να βάλεις τη δίοδο D3 , αντί για τις 2 διόδους της διπλής ανόρθωσης έβαλα γέφυρα και μετά το πυκνωτή έβαλα regulator και τροφοδότησα τον μΕ

http://www.hlektronika.gr/forum/attachment.php?attachmentid=24886&d=1319643539

tasos51
20-06-12, 02:04
δεν ξερω τι γινεται δεν μ ανοιγει την σελιδα :lool:

picdev
20-06-12, 12:47
34609
http://sound.westhost.com/appnotes/an005.htm

tasos51
20-06-12, 13:18
φιλε αν μπορουσες να μας εξηγησεις λιγο το παραπανω κυκλωμα και να μας πεις τι στοιχεια εχει αυτος ο μετασχηματιστης ???

picdev
20-06-12, 17:24
αυτός έχει και μεσαία λύψη αλλά δεν χρειάζεται, αντί για d1 d2 έχει βάλει γέφυρα ανόρθωσης

tasos51
20-06-12, 18:52
δωσε λιγαπερισσοτερα στοιχεια και βασικα απο την στιγμη π το ρευμα ανορθωνεται τι ακριβως ανιχνευει το κυκλωμα ....γενικως μπερδευτικα λιγο γιαυο σε παρακαλεσα αν μπορεις να μ εξηγησεις λιγο το κυκλωμα .... συγνωμη για της ηλιθιες ερωτησεις :001_unsure:

picdev
21-06-12, 11:26
στο σημείο που μηδενίζει η φάση του εναλλασσόμενου , στο ίδιο σημείο γίνεται και μηδέν η διπλή ανόρθωση ,
η d3 είναι κρίσημη γιατί αν δεν την βάλεις (όπως είχα κάνει εγώ) τότε η βάση του τρανζίστορ θα βλέπει την τάση εξομάλυνσης του πυκνωτή ,
δηλαδή θα βλέπει συνέχεια μία σταθερή τάση και όχι τη διπλή ανόρθωση.(το τρανζίστορ θα άγει συνέχεια)

Απο εκεί και πέρα όταν η τάση της ανόρθωση ξεπεράσει τα 0,7volt το τρανζίστορ θα άγει, άρα το out θα βλέπει γείωση δηλαδή μηδέν.
όταν το τρανζίστορ δεν άγει, τότε το out θα βλέπει τη τάση εξομάλυνσης του πυκνωτή .
με αυτό τρόπο διαμορφώνεται και παλμός που βλέπεις στο διάγραμμα

δες πως το έχω κάνει εγώ, έχω χρησημοποιήσει γέφυρα ανόρθωσης και τη τάση out τη παίρνω μετά το regulator γιατί τη κάνω είσοδο στη πόρτα του μΕ
34662

tasos51
21-06-12, 13:52
ok τωρα αρχισα να καταλαβαινω ο μ/τ ποσα volt kai posa amper να ειναι ??

picdev
21-06-12, 15:02
φυσικά με αυτό το μετασχηματιστή και regulator τροφοδοτώ όλο το υπόλοιπο κύκλωμα, ανάλογα τις ανάγκες σου και στα ποσα volt θα δουλεύει ο μΕ

tasos51
21-06-12, 15:26
αρα επειδη εχω πολλα ρελε θα παρω εναν μεγαλουτσικο στα 12 ν ....... συγνωμη που σε πεδευω αλλα γτ να μην χρησιμοποιησω το αλλο κυκλωμα που ανεβασε ενας αλλος φιλος που παιρνει κατευθειαν ταση απο το δικτυο ???

picdev
21-06-12, 15:41
τελικά ρελέ η τριακ θα βάλεις? ο μΕ δεν μπρεί να πάρει 12v θες και δευτερο regulator.


αλλα γτ να μην χρησιμοποιησω το αλλο κυκλωμα που ανεβασε ενας αλλος φιλος που παιρνει κατευθειαν ταση απο το δικτυο ???
Τι να σου πω, γούστα είναι αυτά :lool:

tasos51
21-06-12, 16:12
Τωρα κάνουμε το κύκλωμα για triac μετα θα μπούνε και μερικά ρελε αλλα εκείνα είναι εύκολα .... Το arduino μπορει να πάρει 12 έχει δικό του σταθεροποιητη πάνω ;)

herctrap
22-06-12, 12:24
ναι αλλά όχι AC
θες γέφυρα ανόρθωση

για το δικό μου θες ένα H11AA1 και δυο αντιστάσεις 20-27Kohm 2W η κάθε μια

το δικό μου καταναλώνει περισσότερο, είναι πιο ακριβό, και πιο δύσκολο να τα βρεις σε σχέση με αυτά που θέλει το κύκλωμα του Picdev

τα rele τι θα κάνουν?

tasos51
22-06-12, 15:00
οκ τοτε θα κανω το αλλο κυκλωμα ..... φυσικα και θα βαλω γεφυρα ανορθωσης τα ρελε θα ανοιγοκλεινουν και αυτα καποιες συσκευες