Google+

Σάββατο, 23 Μαΐου 2015

Measuring Inductance using an Arduino

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

Τι θα λέγατε όμως αν αντί για όλα τα παραπάνω, χρησιμοποιούσατε ένα... Arduino !

Το πρόβλημα:

Έστω ότι κατασκευάζουμε ένα πηνίο (με N αριθμό σπειρών/περιελίξεων, l μήκος σπειρών και α ακτίνας σπειρών):
Με τον παραπάνω τύπο υπολογίζουμε, θεωρητικά, την τιμή L, σύμφωνα με τα χαρακτηριστικά του πηνίου που έχουμε κατασκευάσει.

Η Κατασκευή:

Χρησιμοποιούμε σύρμα τύπου AWG24 (από καλώδιο utp cat5), όπως φαίνεται παρακάτω στην εικόνα:

το πηνίο με 35 περιελίξεις (n), ακτίνας (a) 3cm και μήκος (l) 3,5 cm, με βάση τον παραπάνω τύπο, η αυτεπαγωγή του υπολογίζεται ~ 69,95 μH.
Η Μέτρηση:
Χρησιμοποιώντας το παρακάτω κύκλωμα, που υλοποιεί μια τεχνική σύγκρισης της τάσεως σημάτων με το LM339 (ιδέα του @Reibot.org)*, χρησιμοποιώντας το Digital Pin 13 του Arduino ως είσοδο στο LM339(συγκριτή) και στο D11 την έξοδο του LM339:
 
 
και φορτώνοντας το σχετικό sketch:
//13 is the input to the circuit (connects to 150ohm resistor), 11 is the comparator/op-amp output.
//reibot.org for guide
double pulse, frequency, capacitance, inductance;
void setup(){
Serial.begin(115200);
pinMode(11, INPUT);
pinMode(13, OUTPUT);
Serial.println("Why hello!");
delay(200);
}
void loop(){
digitalWrite(13, HIGH);
delay(5);//give some time to charge inductor.
digitalWrite(13,LOW);
delayMicroseconds(100); //make sure resination is measured
pulse = pulseIn(11,HIGH,5000);//returns 0 if timeout
if(pulse > 0.1){ //if a timeout did not occur and it took a reading:
capacitance = 2.E-6; //insert capacitance here. Currently using 2uF
frequency = 1.E6/(2*pulse);
inductance = 1./(capacitance*frequency*frequency*4.*3.14159*3.14159);//one of my profs told me just do squares like this
inductance *= 1E6; //note that this is the same as saying inductance = inductance*1E6
Serial.print("High for uS:");
Serial.print( pulse );
Serial.print("\tfrequency Hz:");
Serial.print( frequency );
Serial.print("\tinductance uH:");
Serial.println( inductance );
delay(20);
}
}
μπορούμε να παρέχουμε τις μετρήσεις στο Serial Monitor:
Ουυυπς!!! για να είμαστε ακριβείς μόλις 63,33 μH :)

Διαβάστε περισσότερα :
Easily measuring inductance with Arduino
Hackaday entry
Αυτεπαγωγή και Πηνία
Πηνίο Τέσλα

*Special thanx to @Alopix for his help & contribution (pcb etching)

Arduino + ESP8266 = Cactus Micro

Το Cactus Micro συνδυάζει ένα Arduino κι ένα ESP8266 wifi module:

Για όσους δεν το γνωρίζουν, το ESP8266 είναι ένα σχετικά νέο, αλλά αρκετά ικανό wifi module με το οποίο επικοινωνείς μέσω σειριακής θύρας(UART) και παρέχει διασύνδεση σε IP δίκτυα (client/server).

Το επαναστατικό ESP8266 φέρνει ακόμη πιο κοντά το IoT.

Είναι πολύ φτηνό και πλέον, οποιοσδήποτε μπορεί να δημιουργήσει project με αυτόνομα arduino nodes που συνδέονται μέσω wifi και μεταδίδουν δεδομένα σε κάποιο web service platform, εύκολα και γρήγορα!

Με το Cactus Micro ειδικότερα, χρησιμοποιείς το Arduino (ATmega 32U4) για να επικοινωνήσεις με το module σειριακά, μέσω AT commands όπου σύμφωνα με το σετ εντολών του, μπορείς να στείλεις δεδομένα σε web servers (POST) ή ακόμη να στήσεις ένα web-server στο ίδιο το ESP8266 αφού ενσωματώνει tpc/ip stack.


Υπάρχει η δυνατότητα και για firmware upgrade του ESP8266 μέσω του Cactus Micro Arduino και χρήση open source εργαλείων (python, esptool, κτλ)

Σχετικοί σύνδεσμοι:

Cactus Micro Developer Wiki
Cactus Micro on Github
ESP8266 Community Forum/Wiki
Projects on Hackaday w/ ESP8266