Τετάρτη 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.

Υπομονή.

Τρίτη 28 Φεβρουαρίου 2012

Arduino Shiftout Registers

Επειδή πολλές φορές χρειαζόμαστε περισσότερες πόρτες από αυτές που προσφέρει το ARDUINO, οι λύσεις είναι δύο:
1. Χρήση του I2C PCF8574
2. Χρήση shift out registers.

Στο παρόν άρθρο θα καλύψουμε την περίπτωση με χρήση shift out register που υπερτερεί σε ταχύτητα έναντι του πρωτοκόλλου I2C.


Integrated Circuit 74HC595


PIN No
Description
Task
1
Q1
Output 1
2
Q2
Output 2
3
Q3
Output 3
4
Q4
Output 4
5
Q5
Output 5
6
Q6
Output 6
7
Q7
Output 7
8
GND
Connect to GND
9
Q7’
Connect to the next IC in array
10
MR
Connect to +5V
11
SH_CP
Clock Pin
12
ST_CP
Latch Pin
13
OE
Connect to GND
14
DS
Data Pin
15
Q0
Output 0
16
Vcc
Connect to +5V

Συνδέσεις
PIN 11 (Clock) --> ARDUINO ClockPin (οποιοδήποτε digital pin)
PIN 12 (Latch) --> ARDUINO LatchPin (οποιοδήποτε analog/digital pin)
PIN 14 (Data) --> ARDUINO  DataPin (οποιοδήποτε digital pin)

PIN 8 (GND) Ground
PIN 10 (MR) +5V
PIN 13 (OE) Ground
PIN 16 (Vcc) +5V

Πλήρης οδηγός  http://www.arduino.cc/en/Tutorial/ShiftOut

Δευτέρα 27 Φεβρουαρίου 2012

Jeenode

Μία καταπληκτική εναλλακτική πρόταση, μας έρχεται από την Ολλανδία και αφορά σε ένα πολύ μικρό arduino με δυνατότητα RF. Αυτό που απουσιάζει είναι το FTDI chip για uploading. Αυτό όμως δεν είναι πρόβλημα διότι με ένα USB BUB II device μπορείτε να κάνετε upload το sketch σε οποιαδήποτε κατασκευή.


Ολα τα PINs του ARDUINO UNO είναι διαθέσιμα στην περίπτωση που το αγοράσετε χωρίς RF. Εάν χρησιμοποιήσετε το RF τότε θα χάσετε τα PINS 2,10,11,12,13.

Φτιάξτε το δικό σας arduino

Πριν φτιάξετε το δικό σας κύκλωμα δείτε το pinout για τον ATMEGA168-328


Επεξήγηση PINS

PIN
UNO Equal
1
Reset
2
D0 RX
3
D1 TX
4
D2 – INT0
5
D3 – INT1
6
D4
7
+5V
8
GND
9
Crystal 16 MHz
10
Crystal 16 MHz
11
D5
12
D6
13
D7
14
D8
15
D9
16
D10 – SS
17
D11 – MOSI
18
D12 – MISO
19
D13 – SCK
20
+5V
21
AREF
22
GND
23
A0
24
A1
25
A2
26
A3
27
A4 - SDA
28
A5 - SCL



Κατασκευή πλακέτας (PCB)

Διαδικασία κατασκευής πλακέτας

Το πιο σημαντικό κομμάτι είναι η σχεδίαση. Εγώ χρησιμοποιώ το PCB Express που είναι δωρεάν.




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



2. Προετοιμασία φιλμ
Τυπώνουμε το φίλμ σε δύο αντίτυπα (προαιρετικά) ή δύο φορές στο ίδιο φύλο για οικονομία.
Τα κόβουμε και τα τοποθετούμε το ένα πάνω στο άλλο για να αποκτήσουμε καλύτερο μαύρο. 



Βάζουμε και βάρος.


Και ξεκινάμε το χρονόμετρο


3. Ζεσταίνουμε 100 g νερό στο βραστήρα.

4. Τοποθετούμε την πλακέτα πάνω στο φιλμ και βάζουμε σιλοτέιπ για να μην κουνιέται.
Βάζουμε την πλακέτα με φιλμ στο θάλαμο UV και ξεκινάμε το χρονόμετρο.

Η πλακέτα αμέσως μετά την έκθεση




5. Ρίχνουμε σε ένα πλαστικό δοχείο το 30-40gr ζεστό νερό και άλλα 60γρ κρύο νερό και μετά ρίχνουμε 5g SENO DEV και ανακατεύουμε μέχρι να εξαφανισθούν οι μικροί κόκκοι.

6. Κάθε 1:30 της έκθεσης μετακινούμε την πλακέτα και το φίλμ σε απόσταση ίση με το μισό της απόστασης των λυχνιών. Αυτό το κάνουμε για ομαλοποίηση της έκθεσης.

7. Στα 4:30 λεπτά κλείνουμε το θάλαμο UV και αφαιρούμε προσεκτικά τα σιλοτέιπ από την πλακέτα.
Κατόπιν βυθίζουμε για 30-50 δευτερόλεπτα την πλακέτα στο δοχείο με το seno dev. Λογικά θα εμφανισθεί το σχέδιό μας. Με ένα πινέλο καθαρίζουμε την επιφάνεια από το φωτοευαίσθητο υλικό που διαλύεται. Το SENO DEV δεν θα καταστρέψει το υπόλοιπο φωτοευαίσθητο υλικό. Είναι ασφαλές να το αφήσουμε λίγο παραπάνω.
Η πλακέτα μετά την εμφάνιση

8. Πλένουμε καλά την πλακέτα κάτω από τη βρύση και την τρίβουμε απαλά με το χέρι μας. Το σχέδιο δεν χαλάει.

9. Αποχάλκωση

Ζεσταίνουμε λίγο νερό στο βραστήρα (ανάλογα με το εμβαδόν του δοχείου η τιμή μπορεί να αλλάξει) και ρίχνουμε 60 g στο δοχείο αποχάλκωσης.

Ρίχνουμε 60 g ακουαφόρτε (Σ/Μ 0,37€)

Ρίχνουμε 15 g περυντρόλ (φαρμακείο 2,4€). Προσοχή: Χρήση μόνο με γάντια.

Ανακατεύουμε

Τοποθετούμε την πλακέτα προσεκτικά. Μία πλακέτα 50 * 80 με μεγάλη γείωση, χρειάζεται 7 με 10 λεπτά.
Μετά την αποχάλκωση πλένουμε καλά την πλακέτα.

10. Αφαίρεση φωτοευαίσθητου υλικού
Στεγνώνουμε την πλακέτα και την ξαναβάζουμε στο θάλαμο UV (χωρίς φιλμ) και μετά ξανακάνουμε εμφάνιση με tu.bo.flo για κρύο νερό αλλά σε ζεστό νερό με προσοχή στις αναθυμιάσεις. Αναλογία μίγματος 1lt νερό/15γραμμάρια tu.bo.flo. Ετσι θα φύγει το φωτοευαίσθητο υλικό που έχει μείνει.

11. Καθαρισμός.  Για να φύγει όλο το οξειδωτικό υλικό πρέπει να πλυνουμε πολύ καλά την πλακέτα και μετά να την καθαρίσουμε με ασετόν (από χρωματοπωλείο). Καθαρίζουμε με ασετόν μέχρι να σταματήσει να βγάζει πράσινο χρώμα. Μετά ρίχνουμε bronzil (supermarket) και καθαρίζουμε με χαρτί κουζίνας. Μετά πλένουμε καλά για να φύγουν όλα τα κομματάκια χαρτιού που μπορεί να έχουν κολλήσει πάνω στην πλακέτα.

13. Tin plating με χρήση SENO 3211
Αναλογία: 11 μέρη νερό, 1 μέρος SENO 3211 σε νερό τουλάχιστον 20 βαθμών. (SENO3211 από acdcshop.gr περίπου 17€). Μετά από κάθε χρήση δεν το πετάμε. Μπορούμε να το ξαναρίξουμε στο δοχείο.
 
Μίγμα για επικασιτέρωση (δεν το έχω ελέγξει)
1γρ Χλωριούχος Αργυρος
2γρ ξυνό (ταρταρικό οξύ)
3γρ αλάτι

13. Solder Mask (προαιρετικό)
Τυπώνουμε σε φίλμ μόνο τα pads και γενικά τις επιφάνειες που θέλουμε να μην μονώσουμε.

Ρίχνουμε μερικές σταγόνες (3 - 5) Solder Mask επάνω στην πλακέτα και τις απλώνουμε ομοιόμορφα. Ζεσταίνουμε την πλακέτα με το Solder-Mask στο φούρνο στους 180 βαθμός για τουλάχιστον 10 λεπτά. Τοποθετούμε προσεκτικά το φίλμ επάνω στην πλακέτα και πιέζουμε πάρα πολύ για να μην αφήσει κενά. Τοποθετούμε την πλακέτα με το φίλμ στο θάλαμο UV για 20 λεπτά. Μετά την τοποθετούμε σε developer ή tu-bo-flo.

Μόλις τελειώσει η έκθεση καθαρίζουμε με ασετον τα pads.

14. Τρύπημα. Ξεκινάμε από τις μικρές τρύπες και μετά αλλάζουμε τρυπάνια μέχρι το μεγαλύτερο. Το καλύτερο εργαλείο είναι το Dremel με τη σχετική βάση. Μετά το τρύπημα πλένουμε καλά με νερό και ύστερα καθαρίζουμε με ασετόν.

15. Κόλλημα. Εάν το SENO 3211 έχει χρησιμοποιηθεί τότε το κόλλημα γίνεται πιο εύκολα. Η καλύτερη κόλληση γίνεται ζεσταίνοντας το pad και μετά ακουμπώντας την κόλληση επάνω στο pad. Αυτή η διαδικασία δημιουργεί σταγόνες αλοιφής σε διάφορα σημεία. Μετά τη δοκιμή της πλακέτας μπορούμε να την καθαρίσουμε με ασετόν.

16. Εάν δεν έχει χρησιμοποιηθεί το SENO 3211 τότε η πλακέτα πρέπει να ψεκασθεί με βερνίκι για να αποφύγουμε την οξείδωση του χαλκού.

Το ξεκινάω

Το καλοκαίρι του 2010 κάποιος φίλος μου μίλησε για το ARDUINO. Μέσα σε μόλις λίγους μήνες κατάφερα να φτιάξω κατασκευές που ούτε φανταζόμουν ότι μπορούσα να φτιάξω.

Επειδή όμως δεν αρκεί αυτό, αποφάσισα να μοιραστώ τις εμπειρίες μου με τον υπόλοιπο κόσμο και κυρίως τους Έλληνες.

Οτι έχω τεκμηριώσει μέχρι τώρα καθώς και πολλά σχέδια PCB θα τα ανεβάσω σιγά-σιγά.