Τετάρτη 6 Ιουνίου 2012

Φορτιστής Μπαταρίας Μολύβδου με Arduino

Υλικά

2 * LM317 Voltage Regulator
2 * 0.22uF Capacitors
2 * 4.7K Resistors
2 * 2.2K Resistors
2 * 10K Resistors
1 * 120R Resistor
1 * 1K Resistor
1 * Trimmer 5K
1 * Power Supply 15V
1 * nChannel MOSFET
1 * pChannel MOSFET
1 * ΒC 547 Transistor
1    Resistor R* (βλ. παρακάτω)

Σχήμα

Θεωρία
Η λογική φόρτισης μπαταριών SLA αφορά 3 βασικά θέματα:
1. Φόρτιση σε σταθερή τάση.
2. Καθορισμός του μέγιστου ρεύματος που πρέπει να δεχθεί η μπαταρία.
3. Συντήρηση φόρτισης.

Η επιλογή της τάσης γίνεται από το πρώτο (U1) LM317 και με τη χρήση του trimmer οριοθετούμε την τελική τάση στο άκρο Bat+ με την προϋπόθεση ότι η βάση του BC547 (PIN2) είναι HIGH.

Η οριοθέτηση του μέγιστου ρεύματος γίνεται με το 2ο LM317 (U2) μέσω της αντίστασης.
Στο σχήμα είναι ξεκάθαρος ο τύπος προσδιορισμού του μέγιστου ρεύματος.

Η συντήρηση της φόρτισης γίνεται μέσω AVR με 2 σημεία ελέγχου (PIN2, PIN3).

Το παρόν κύκλωμα προσφέρει:
1. Ελεγχο της τάσης.
2. Ελεγχο του μέγιστου ρεύματος.
3. Ελεγχο της φόρτισης.
4. Ελεγχο της τάσης της μπαταρίας και του τροφοδοτικού.

Οταν το PIN2 γίνει HIGH τότε η φόρτιση ξεκινάει μέσω του pChannel MOSFET.
Οταν το PIN2 γίνει LOW τότε η φόρτιση σταματά και ενεργοποιείται ο voltage divider που καταλήγει στο PIN3.

Για να μετρήσετε τα VOLT πρέπει να κάνετε τα παρακάτω:

digitalWrite(2,LOW);
delay(50);
float battery_voltage  = 3.22 * analogRead(A1) / 204.5;

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

Βελτιώσεις
1. Προσθήκη LED φόρτισης
2. Προσθήκη LED με ένδειξη στάθμης
3. Χρήση ATTINY45!

Δευτέρα 21 Μαΐου 2012

Automatic Switching from DC to BATTERY

Επειδή το αντιμετώπισα το θέμα.

Ο πιο εύκολος τρόπος για να γυρίσει αυτόματα η παροχή μας από DC (πχ εξωτερικό τροφοδοτικό) σε μπαταρία φαίνεται στο σχήμα.

Μια καλύτερη προέκταση είναι η προσθήκη ενός ηλεκτρολυτικού στην κοινή έξοδο DC και ένα ενσωματωμένο κύκλωμα φόρτισης.

Κυριακή 29 Απριλίου 2012

Arduino Mosfet Module για LED Strip

Μετά από πολύ κόπο και πειραματισμό κατάφερα να φτιάξω μία πολύ μικρή πλακέτα για έλεγχο LED Strip.

Προδιαγραφές:
1. Η διάταξη πρέπει να έχει δυνατότητα απομακρυσμένης ρύθμισης.
2. Πρέπει να υπάρχουν και buttons για τοπικές επιλογές.
3. Υποστήριξη μέχρι 4 καναλιών.

Περιορισμοί:
1. Χαμηλή θερμοκρασία.

Για την απομακρυσμένη ρύθμιση απαιτείται το RFM12B Module το οποίο λειτουργεί στα 3.3V.
Για τη χαμηλή θερμοκρασία απαιτείται η χρήση MOSFET και Transistor ή Thyristor. Τα mosfet που διεγείρονται στα 3.3V είναι ολίγον σπάνια και υποστηρίζουν λιγότερα Α.

Επιλογή MOSFET N-Channel IRF3205ZPBF.
Το συγκεκριμένο mosfet αν και διεγείρεται στα 5V, έχει μόλις 0,0065 Ohm αντίσταση πράγμα που σημαίνει ότι στα 4A η ισχύς που θα μετατρέψει σε θερμότητα είναι μόλις 104mW, οπότε δεν χρειάζεται ψύκτρα.
Η χρήση pulldown αντιστάσεων R10K στο Gate του MOSFET είναι επιβεβλημένη διότι θα υπάρχουν προβλήματα στην κατάσταση LOW του MOSFET. Η συγκεκριμένη αντίσταση επιτρέπει στο mosfet να εκφορτίσει το GATE.
Μία σημαντική σημείωση: Επειδή ο Controller λειτουργεί σε υψηλή συχνότητα θα πρέπει να προστεθούν χρόνοι καθυστέρησης στις εναλλαγές κατάσταση HIGH-LOW στα MOSFET. Μία τιμή πάνω από 30ms νομίζω ότι είναι αρκετή.

Η ασυμβατότητα μεταξύ των mosfet και του RFM12B ως προς την τροφοδοσία λειτουργίας λύνεται ως εξής:
1. Η τάση λειτουργίας του RFM12B προσαρμόζεται με ένα ακόμα regulator LE33CZ που συνοδεύεται από τους αντίστοιχους πυκνωτές.
2. Η μετατροπή των σημάτων από 5V σε 3.3V για τις πόρτες του Arduino 10,11,13 γίνεται με διαιρέτη τάσης 4R7K R10K. Οι υπόλοιπες πόρτες 12,2 ως INPUT δεν έχουν πρόβλημα με την τάση.



Δείτε και το βίντεο

Τετάρτη 28 Μαρτίου 2012

Arduino Ethernet

Το ξεκίνησα και αυτό. Σε λίγες ώρες θα γίνει και η δοκιμή. Εφτιαξα την πλακέτα και χρησιμοποίησα τα παρακάτω εξαρτήματα:

1. IC ENC28J60SP (Farnell 1564402)  ~ 4,20 euro
2. Crystal 25MHz  ~ 0,40 euro
3. Ferrite Filter BL01RN 20MHz to 1000MHz (Farnell 9526820) ~ 0,76 euro
4. Πυκνωτές
    2 x 22pF (lead spacing 2,54mm)
    4 x 0.1uF (lead spacing 5mm)
    1 x 10uF (Ηλεκτρολυτικός)

5. Αντιστάσεις
    2 x (470R)
    1 x (2,32K)
    4 x (49,9R)

6. MagJack (χωρίς LED)  ~ 0,50 euro
7. LED x 2

Το πρωτόκολλο επικοινωνίας είναι SPI και η σύνδεση με το ARDUINO γίνεται ως εξής:

Eth PIN   Arduino PIN
1              Ground
2              3.3V
3              13
4              12
5              11
6              8



Στην ουσία πρόκειται για απλούστερη υλοποίηση του EtherCard από το jeelabs.org

Στοιχεία για τη βιβλιοθήκη θα βρείτε εδώ.

Download EtherCard library




Κυριακή 18 Μαρτίου 2012

ATMEGA328 ATTINY45 ATTINY85 Bootloader

Επειδή βαρέθηκα με τα breadboard και τις πλακέτες γενικών κατασκευών, έφτιαξα μία πλακέτα ειδικά για τους ATMEGA328, ATTINY45, ATTINY85 ως ARDUINO UNO Shield.


Επίσης με το αγαπημένο μου USB BUB II Device μπορούμε να ανεβάσουμε sketch.


Download PCB Express File

Κυριακή 11 Μαρτίου 2012

Arduino ST7565

Το ST7565 είναι ένα σχετικά καλό και φτηνό display. Ομως, το κυριότερο πρόβλημά του είναι το γεγονός ότι λειτουργεί στα 3.3V. Οπότε χρειάζεται οπωσδήποτε να οδηγηθεί από το IC CD4050 (Hex Buffer Converter) για να λειτουργήσει στα 5V. Εάν υπάρχει arduino τότε θα μπορέσετε να το τροφοδοτήσετε με 3.3V. Εάν όμως έχετε κατά νου ένα κύκλωμα με ATMEGA στα 5V τότε θα χρειαστείτε αυτό.



Πρόκειται για μία πλακέτα driver για το ST7565 που έχει τις παρακάτω εισόδους
1. 5V
2. Ground
3. CS
4. RST
5. A0
6. SCLK
7. SID
8. Backlight +
9. Red Backlight Level
10. Green Backlight Level
11. Blue Backlight Level


Το κύκλωμα έχει ένα LE33CZ μαζί με τους κλασικούς πυκνωτές για μετατροπή των 5V σε 3.3V.
Τα υπόλοιπα είναι η γνωστή συνδεσμολογία του adafruit http://www.ladyada.net/learn/lcd/st7565.html

Ειδικότερα για RGB Backlight:
Μπορείτε να το συνδέσετε σε PWM pins έτσι ώστε να έχετε ότι χρώμα θέλετε για backlight.
Ομως θα πρέπει τα PWM να βρίσκονται στον ίδιο timer για το ATMEGA. Εγώ το έχω συνδέσει σε ARDUINO MEGA 1280 στα pins 6,7,8 και λειτουργεί τέλεια.... Ίσως, η function millis() έχει κάποια θέματα και το ερευνώ. Ένα DS1307 λύνει τα προβλήματα timing.

Κίτρινο

Πράσινο


Πέμπτη 8 Μαρτίου 2012

Arduino ATMEGA328 με Siemens C65 κινητό

Ξεκίνησα μία κατασκευή και έχω χαθεί εντελώς. Θέλω να στέλνω SMS από το ATMEGA χωρίς να δώσω πολλά λεφτά.

Η πρώτη κίνηση ήταν να βρω ένα παλιό κινητό. Βρήκα το Siemens C65. Και τώρα ξεκινάει ο Γολγοθάς.

1. Καλώδιο Data. Το βρήκα περίπου στα 7€.
2 Αποτυχία φόρτισης διότι η μπαταρία τα έχει παίξει. Εβγαλα τη μπαταρία και σύνδεση 4.5V στα δύο ακραία pins (εκεί που ακουμπά η μπαταρία). Πήρε μπροστά.
3. Σύνδεση με το ATMEGA. Με βάση το http://pinouts.ru/ η σύνδεση του κινητού είναι USB....
4. Πρέπει να βρω ένα τρόπο να μιλήσω από TTL ή UART του Mega1280 με USB.

Κεφάλαιο 2 TTL ή UART ή RS232 με USB.
Χαμός....
Μετά από πολύ ψάξιμο βρήκα το μαγικό keyword search phrase "AVR-CDC" http://www.recursion.jp/avrcdc/cdc-232.html#schematic. Θα το δοκιμάσω αλλά πρέπει να στείλω έτοιμο HEX file στο ATTINY45 μέσω ενός Arduino UNO.


Με αυτή τη σύνδεση περνάμε hex file στο ATTINY.

Η εντολή:

<arduinoPath>\hardware\tools\avr\bin\avrdude -c avrisp -P COM5 -p t45 -U flash:w:cdctiny45.hex  -C  <arduinoPath>\hardware\tools\avr\etc\avrdude.conf

Σημείωση: το COM5 μπορεί να είναι διαφορετικό σε εσάς.


V-USB Schematic



Οι πρώτες ενδείξεις είναι αρνητικές. Για να γίνει σωστός έλεγχος πρέπει να το δοκιμάσεις από PC. Δυστυχώς δεν έχω πια Windows XP. Για τα Windows 7 δεν υπάρχει digitally signed driver. Οπότε η δοκιμή θα γίνει με ATMEGA8.

Υπομονή.