# Συζήτηση Κυκλωμάτων > Κυκλώματα για Η/Υ >  >  Σειριακή θύρα και κυκλωμα που οπλίζει ενα ρελεδακι! Γίνεται ?

## xarda

Καλωσήλθα πρώτα απ'ολα στο ομορφο φόρουμ !!!  :Rolleyes: 

Είμαι νέος σχετικά ( οχι σε ηλικία  :Smile:  ) και έχω σκεφτεί κάτι που μπορεί να γίνει με την βοηθεια σας.
Εχω φτιάξει ενα προγραμματακι σε C++ με το οποίο μπορώ να στείλω και να  λάβω δεδομένα μέσω της σειριακής θύρας του Η/Υ! Απο εκεί και μετά θα  ήθελα να μάθω τι πρέπει να κάνω και πως να το φτιάξω προκείμένου η θύρα  αυτη να συνδεεται με ενα κυκλωματακι το οποίο απλά θα οπλίζει ενα ρελε  το οποίο με την σειρα του θα θετει σε λειτουργία ενα ταινιόδρομο ( οπως  αυτους που εχει η ΔΕΗ αλλά εννοειται κατα πολύ μικρότερο!  :Smile:  )

Περιμένω με ανυπομονησία τις ιδέες σας!

----------


## mariosm

Ολο το κυκλωμα μπορει να ειναι ενας και μοναδικος μικροεπεξεργαστης και η υλοποιηση της κατασκευης δεν ξεπερναει χρονικα τα δεκα λεπτα.

----------


## xarda

Μπορείς να μου πεις κάτι περισσότερο ?
Μικροεπεξεργαστή ή μικροελεγκτή εννοείς ?

----------


## info@kalarakis.com

μικροελεκτη εννοεί. ΑΤtiny2313 ειναι οκ. Κατέβασε απο το www.mcselec.com το demo της basic προγραμματιζει μέχρι 2Κ. Στα παραδείγματα για τη σειριακη θα βρεις αυτό που ζητάς Το έχει ως παράδειγμα.
Σου προτείνω αυτό γιατι όπως λενε τρώγοντας έρχετε η όρεξη. θα θες μετά να σταματάς τη ταινεία να αν'αβεις και κανενα λεδ κτλ.

----------


## GeorgeVita

> Καλωσήλθα πρώτα απ'ολα ... 
> ... μέσω της σειριακής θύρας του Η/Υ ... απλά θα οπλίζει ένα ρελέ



Καλώς μας βρήκες!
Αν θέλεις απλά να ελέγχεις 2-3 ρελέ από το PC μπορείς να το κάνεις κατευθείαν στη σειριακή πόρτα. Ελέγχοντας τα σήματα TXD, RTS και DTR έχεις 3 εξόδους. Με 3 τρανζίστορ οδηγείς 3 ρελέ. Ετσι λειτουργούν οι απλοί προγραμματιστές για μC.

Αν χρειάζεσαι και εισόδους έχεις έως 5: RXD, CTS, DSR, DCD, RING

http://en.wikipedia.org/wiki/RS-232

G

----------


## xarda

> Αν θέλεις απλά να ελέγχεις 2-3 ρελέ από το PC μπορείς να το κάνεις κατευθείαν στη σειριακή πόρτα. Ελέγχοντας τα σήματα TXD, RTS και DTR έχεις 3 εξόδους. Με 3 τρανζίστορ οδηγείς 3 ρελέ.
> 
> Αν χρειάζεσαι και εισόδους έχεις έως 5: RXD, CTS, DSR, DCD, RING



Ναι απο την serial port θελω να γινει η δουλεια μου.
Τωρα...να χρησιμοποιησω τρανζίστορ ή μικροελεγκτη οπως προτείνει και ο φίλος *info@kalarakis.com ?*

και που μπορώ να τα βρώ ?

----------


## mariosm

Η χρηση μικροελεγκτη θα σου δωσει πολυ περισσοτερες δυνατοτητες. Εφ' όσον εχεις κανει το προγραμμα επικοινωνιας για να στειλεις και να λαβεις δεδομενα τοτε ολα ειναι πολυ απλα.
Αν θελεις δωσε περισσοτερες πληροφοριες για το προγραμμα που εχεις κανει για να σου γραψω ακριβως τι θα κανεις.

----------


## GeorgeVita

Δοκίμασε να ελέγξεις τα RTS και DTR από το πρόγραμμα στο PC.
Αν το καταφέρεις χωρίς "τυχαίους" παλμούς και το θεωρήσεις αξιόπιστο, βάζεις τρανζίστορ.
Με το μC έχεις μεγαλύτερη ασφάλεια από τυχαία ON σε περίπτωση που κολλήσει το PC.
Αν είναι επικίνδυνη η λανθασμένη κίνηση της ταινίας, ψάξε για κάρτα βιομηχανικού αυτοματισμού.
G

Υ.Γ. και ότι λέει ο Μάριος

----------


## Manthosvf

sou exw kati aplo to eixa kanei sto likio otan imoun protaris vevea to programa to ekane o aderfos mou pou einai programatistis  :Smile:  http://www.youtube.com/watch?v=jZ8ydOFqNMU http://manthosvf.terapad.com/index.c...btoboqpkpjhtqs

----------


## xarda

> Η χρηση μικροελεγκτη θα σου δωσει πολυ περισσοτερες δυνατοτητες. Εφ' όσον εχεις κανει το προγραμμα επικοινωνιας για να στειλεις και να λαβεις δεδομενα τοτε ολα ειναι πολυ απλα.
> Αν θελεις δωσε περισσοτερες πληροφοριες για το προγραμμα που εχεις κανει για να σου γραψω ακριβως τι θα κανεις.




Περιλιπτικά να πω οτι:

1.Εκτελώ την CreateFile και βρίσκω (με ενα loop) ποιες θύρες είναι ανοικτές και διαθέσιμες στο εκάστοτε PC 
2.Θέτω τις κατάλληλες παραμέτρους οπως baud rate,stop bits και το timeout για την θυρα
3.Χρησιμοποιώ την ReadFile για ανάγνωση της θύρας ή την WriteFile για εγγραφή
4.Κλείνω την θύρα!

Χρησιμοποιώ το πρόγραμμα Serial Port Monitor το οποίο πραγματι δείχνει οτι στελνονται δεδομένα τύπου "ΑΑΑΑΑ" , "ΕΝΑ" , "DIO" κ.τ.λ

Ελπίζω να καταλαβες τα παραπάνω.Συμφωνα με αυτά ποιον δρόμο να ακοληθούσω ?

----------


## mariosm

Με μικροελεγκτη φυσικα. Θα ανεβασω αυριο ενα κωδικα ειδικα για τη δικη σου εφαρμογη για να κανεις δοκιμες

----------


## spiroscfu

Μπορείς να χρησιμοποίησης μόνο την σειριακή εάν σου αρκούν  3out/5in, όπως σου είπε και ο γιώργος.
Και έλεγχό αυτόν μέσα απο το πρόγραμμα του pc, αφού είδη γνωρίζεις C++.
H όλη διαδικασία για να την κάνεις με μικροελεγκτή θέλει αρκετό ψάξιμο και εκμάθηση κάποιον πραγμάτων, αλλά μπορείς να τη κάνεις και με τρανζίστορ, εάν ψάξεις θα βρεις σχέδια 
όπως αυτά 
circuit RS.jpg

----------


## xarda

Μια μικρή εμπειρία για τους μικροελεγκτες εχω και νομιζω θα ειναι καλύτερα να δουλέψω με αυτούς.Απο τρανζίστορ και σχεδια ομολογώ πως δεν εχω ιδέα.Απο την αλλη ομως δεν λεω οχι στο να κάτσω να μάθω πως φτιαχνω τα κυκλωματακια αυτα...Με την βοηθεια σας φυσικα!  :Smile:

----------


## spiroscfu

με ποιους έχει γνωριστεί, αν είναι με pic μπορώ να σε βοηθήσω

----------


## info@kalarakis.com

Καλύτερα θα ήταν να μας δώσει περισσότερες λεπτομέρειες για τη κατασκευή και το επίπεδο ασφάλειας και μετά να του προτείνουμε, και με πια-ο πρόγραμμα θα στέλνει δεδομένα στη σειριακή

----------


## xarda

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

----------


## klik

> *Μια μικρή εμπειρία για τους μικροελεγκτες εχω* και νομιζω θα ειναι καλύτερα να δουλέψω με αυτούς.*Απο τρανζίστορ και σχεδια ομολογώ πως δεν εχω ιδέα*.Απο την αλλη ομως δεν λεω οχι στο να κάτσω να μάθω πως φτιαχνω τα κυκλωματακια αυτα...Με την βοηθεια σας φυσικα!



μάθε πρώτα τα βασικά: αντιστάσεις, πυκνωτές, πηνία, δίοδοι, τρανζίστορ κλπ γιατί αλλιώς είναι άχρηστοι και οι μικροελεγκτές.
Π.χ. πως θα οδηγήσεις ρελέ με μικροελεγκτή αν δεν ξέρεις να συνδέσεις τρανζίστορ;

----------


## xarda

Ωραια!
Μπορεις να μου προτεινεις καποιο link το οποιο πειγραφει τα βασικά θεματα που πρεπει να ξερω ? ( στα Ελληνικα  :Smile:  )

----------


## klik

π.χ. ηλεκτρονικά

----------


## xarda

Και κάποιο προγραμματακι με το οποιο να μπορω να κάνω κυκλωματα ?
Απ'οτι ειδα το λινκ σου περιεχει ολοκληρη εγκυκλοπαιδεια!!Κατι πιο απλο και συγκεκριμένο με το θεμα μου δεν υπαρχει ?
Ειναι ανωφελο νομιζω να μαθω ολα αυτα για να δουλεψει ενα μοτερακι...για αρχη

----------


## spyroslo

Και εγώ θα σου πρωτινά να παίξεις με μικροεπεξεργαστή και συγκεκριμένα με PICAXE που είναι ουσιαστικά ένας PIC άλλα γράφεις το κώδικα σου BASIC
Αφού θες κάτι τόσο απλό ο κώδικας σου δεν θα ξεπεράσει της 10 γραμμές 

παράδειγμα πολύ απλό 

main:
serin b.0,N2400,b1 
if b1=”a” then hot 
goto main

hot:
high b.1
goto main

----------


## xarda

> Με μικροελεγκτη φυσικα. Θα ανεβασω αυριο ενα κωδικα ειδικα για τη δικη σου εφαρμογη για να κανεις δοκιμες



Με ξέχασες ?

----------


## spiroscfu

> Μπορείς να χρησιμοποίησης μόνο την σειριακή εάν σου αρκούν  3out/5in, όπως σου είπε και ο γιώργος.
> Και έλεγχό αυτόν μέσα απο το πρόγραμμα του pc, αφού είδη γνωρίζεις C++.
> H όλη διαδικασία για να την κάνεις με μικροελεγκτή θέλει αρκετό ψάξιμο και εκμάθηση κάποιον πραγμάτων, αλλά μπορείς να τη κάνεις και με τρανζίστορ, εάν ψάξεις θα βρεις σχέδια 
> όπως αυτά 
> circuit RS.jpg



Θα σου έλεγα να ξεκινήσεις με αυτό, απλό και εύκολο.
p.s. δεν γλυτώνεις τα τρανζίστορ και μ/ε να χρησιμοποιείσης.

----------


## xarda

Για να ξεμπερδεψω λίγο τα πραγματα...
Αν χρησιμοποιησω Μικροελεγκτη θα γίνει η δουλειά μου ?
Πρέπει απαραιτήτως στον μικροελεγκτη να χρησιμοποιησω και τρανζιστορακια και σχεδια κ.τ.λ ?
Που μπορώ να βρω μικροελεγκτη ?

----------


## spiroscfu

Με μ/ε σίγουρα μπορείς να κάνεις την δουλεία σου μόνο που φυσικά χρειάζεσαι και τρανζιστοράκια και κύκλωμα προσαρμογής rs232/ttl (επιπλέον τρανζίστορ ή ολοκληρωμένο) 
που όλο αυτό ισούται σε ποιο μεγάλη δυσκολία.

----------


## xarda

Οκ.
Απο εκει και μετά.
Το κύκλωμα προσαρμογής που γραφεις είναι το παραπανω σχεδιο ?
Δηλαδη θα πρεπει να φτιαξω το παραπανω σχεδιο και μετα εκει να συνδεσω τον μ/ε ?
( σορρυ αν ρωταω βλακειες αλλα τωρα μαθαινω!  :Smile:  )

----------


## spiroscfu

Το παραπάνω κύκλωμα μπορείς να το χρησιμοποιήσεις και σαν προσαρμογή rs232/ttl αλλά και κατευθείαν για την οδήγηση του ρελέ (χωρίς μ/ε)

----------


## xarda

Δηλαδή θα πρέπει να μάθω πως θα φτιάξω αυτό το κύκλωμα και:
1-να συνδεθεί απο την μια πλευρα με την σειριακή θύρα
2-να συνδεθεί απο την αλλη με το ρελε
3-να συνδεθεί απο την αλλη με ρευμα

σωστα ?

----------


## spiroscfu

rs232.jpg
Μπορείς να το κάνεις έτσι.

Και από το πρόγραμμά σου θα ελέγχεις το συγκεκριμένο πιν, όταν το κάνεις H η True ο ρελές δεν θα λειτουργει ενώ όταν το κάνεις L η False το ρελέ θα ενεργοποιείται

----------


## Πανοςbmw

http://users.sch.gr/jabatzo/files/ci...s_rele_LPT.pdf
νομίζω ότι με αυτό θα κάνης την δουλειά σου

----------


## stom

> Συνημμένο Αρχείο 20397
> Μπορείς να το κάνεις έτσι.
> 
> Και από το πρόγραμμά σου θα ελέγχεις το συγκεκριμένο πιν, όταν το κάνεις H η True ο ρελές δεν θα λειτουργει ενώ όταν το κάνεις L η False το ρελέ θα ενεργοποιείται



Ε οχι ρε παιδια, δεν γινονται αυτα που λετε...
ΔΕΝ μπορεις με software να κανεις το TxD H η L. Η σειριακη εχει hardware uart και δεν παρακαμπτεται. Αν ελεγες για το DTR κατι γινεται.
Αλλα απαιτει να κατεβεις χαμηλα για να παιξεις με το dtr

----------


## spiroscfu

Που βρίσκεις το δύσκολο δεν μπορώ να καταλάβω.
Καλά που πρέπει να γίνεται να κρατήσεις προγραμματιστικά το RxD σε H κατάσταση (δεν μου έχει χρειαστεί χρησιμοποιώ μ/ε ),
αλλά ποιος μίλησε για H η L συνεχόμενο?

----------


## stom

1. Δεν μπορεις να στειλεις ενα μεμονωμενο παλμο
2. Αν δεν ειναι συνεχομενο το High πως θα μεινει οπλισμενο το ρελε?

----------


## GeorgeVita

... προτείνω να συμφωνήσουμε ότι το κύκλωμα στο σχόλιο 29 λειτουργεί σχετικά απλά με έλεγχο των σημάτων RTS και DTR με την προϋπόθεση ότι "έχουμε πλήρη έλεγχο της σειριακής από το πρόγραμμα".

Αν θέλουμε να "αναβαθμίσουμε" την ιδέα μπορούμε να χρησιμοποιήσουμε πιο "έξυπνο" driver και να υλοποιήσουμε ένα bus I2C ή SPI με τα RTS, DTR ή και TXD. Στην περίπτωση του SPI με CLK, DATA, ENABLE τη λειτουργία CLK θα κάνει το TXD με μικρό φιλτράρισμα (δίοδος, αντίσταση, πυκνωτής) έτσι ώστε να έχουμε ένα παλμό σε κάθε χαρακτήρα.

Στην περίπτωση του xarda αρκεί το παραπάνω κύκλωμα με έλεγχο του h/w handshake (RTS ή DTR).
G

----------


## spiroscfu

> 1. Δεν μπορεις να στειλεις ενα μεμονωμενο παλμο
> 2. Αν δεν ειναι συνεχομενο το High πως θα μεινει οπλισμενο το ρελε?







> ποιος μίλησε για H η L συνεχόμενο?



Καταρχήν γίνεται πολύ απλά με τα RTS και DTR.
Τώρα για το TxD, ας πούμε πως είναι κάπως δύσκολο να το θέσουμε σε συνεχόμενο λογικό H, οκ βρίσκουμε άλλο τρόπο.

  Ας πούμε πως ρυθμίζουμε την σειριακή στα 9600,Ν,8,1  έτσι έχουμε 10 bit με περίοδο 1/9600=104μS  =>104μs ανά bit,
έτσι λοιπόν στέλνουμε 1byte σε χρόνο 104μs*10=1040μS.
Από ότι θυμάμαι η usart είναι συνέχεια σε λογικό H (-12V) και όταν  αρχίσει να στέλνει βάζει σε λογικό L (+12V) το start bit μετά ακολουθεί  το byte και τέλος το stop bit.

Αν στο πρόγραμμα του pc φτιάξουμε ένα while loop που όταν πατάμε ένα  button να στέλνει συνέχεια το dec(0) η τον char (null) με ένα delay κάθε  φορά 2mS,
τότε λογικά θα έχουμε έναν παλμό στο TxD με περίοδο ~2mS και με ~50% dutty cycle .
Αυτόν τον παλμό (500hz/50% dutty cycle) θα τον οδηγήσουμε στην βάση του τρανζίστορ και θα οπλίζει το ρελέ.

----------


## xarda

Ο κωδικας που χρησιμοποιώ ειναι ο παρακάτω και εγινε με βαση το msdn:




```
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#pragma hdrstop

//---------------------------------------------------------------------------

/*

link οδηγιων:
http://etutorials.org/Programming/Pocket+pc+network+programming/Chapter+5.+Using+Serial+and+Infrared+Ports/Serial+Communications/


5.1 Array
-----------------------------------------
BAUD_075    75 bits per second

BAUD_110    110 bits per second

BAUD_134_5    134.5 bits per second

BAUD_150    150 bits per second

BAUD_300    300 bits per second

BAUD_600    600 bits per second

BAUD_1200    1,200 bits per second

BAUD_1800    1,800 bits per second

BAUD_2400    2,400 bits per second

BAUD_4800    4,800 bits per second

BAUD_7200    7,200 bits per second

BAUD_9600    9,600 bits per second

BAUD_14400    14,400 bits per second

BAUD_19200    19,200 bits per second

BAUD_38400    38,400 bits per second

BAUD_56K    56,000 bits per second

BAUD_57600    57,600 bits per second

BAUD_115200    115,200 bits per second

BAUD_128K    128,000 bits per second

BAUD_USER    Programmable baud rates are available
---------------------------------------------------


5.2 Array
-----------------------------------------------
PST_RS232    RS-232C srial port

PST_PARALLELPORT    Parallel port

PST_RS422    RS-422 port

PST_RS423    RS-423 port

PST_RS449    RS-449 port

PST_MODEM    Modem device

PST_FAX    Fax device

PST_SCANNER    Scanner device

PST_NETWORK_BRIDGE    Network bridge device

PST_LAT    LAT device

PST_TCPIP_TELNET    TCP/IP Telnet protocol

PST_X25    X.25 standards

PST_UNSPECIFIED    Unspecified device
-----------------------------------------------






5.3 Array
-----------------------------------------------
PCF_DTRDSR    Data Terminal Ready (DTR) and Data Set Ready (DSR) are supported.

PCF_RTSCTS    Request to Send (RTS) and Clear To Send (CTS) are supported.

PCF_RLSD    Receive Line Signal Detect (RLSD) is supported.

PCF_PARITY_CHECK    Parity checking is supported.

PCF_XONXOFF    Flow control is supported.

PCF_SETXCHAR    Settable XON and XOFF flow control are supported.

PCF_TOTALTIMEOUTS    Total (elapsed) timeouts are supported.

PCF_INTTIMEOUTS    Interval timeouts are supported.

PCF_SPECIALCHARS    Special character support is available.

PCF_16BITMODE    16-bit mode is available.
-----------------------------------------------



5.4 Array
-----------------------------------------------
SP_PARITY    Parity can be set on the port.

SP_BAUD    Baud rate can be set on the port.

SP_DATABITS    The number of data bits can be set on the port.

SP_STOPBITS    The number of stop bits can be selected on the port.

SP_HANDSHAKING    Flow control can be set on the port.

SP_PARITY_CHECK    Parity checking can be set on the port.

SP_RLSD    Receive Line Signal Detect can be controlled on the port.
-----------------------------------------------


5.5 Table
------------------------------------------------
DATABITS_5    5 data bits

DATABITS_6    6 data bits

DATABITS_7    7 data bits

DATABITS_8    8 data bits

DATABITS_16    16 data bits

DATABITS_16X    Wide path data bit
------------------------------------------------


5.6 Table
------------------------------------------------
STOPBITS_10    1 stop bit

STOPBITS_15    1.5 stop bits

STOPBITS_20    2 stop bits

PARITY_NONE    No parity

PARITY_ODD    Odd parity

PARITY_EVEN    Even parity

PARITY_MARK    Mark parity

PARITY_SPACE    Space parity
------------------------------------------------
*/







static HANDLE hSerialPort;





//ΌΤΑΝ ΕΠΙΧΕΙΡΩ ΝΑ ΑΝΟΙΞΩ ΕΝΑ ΑΡΧΕΙΟ Η ΜΙΑ ΣΥΣΚΕΥΗ ΧΡΗΣΙΜΟΠΟΙΩ ΠΑΝΤΑ ΤΗΝ CreateFile
BOOL CreateF(void){

hSerialPort = CreateFile(TEXT("COM3:"),//Η θύρα που επιλέγω
                         GENERIC_READ|GENERIC_WRITE, //Το αρχειο-θυρα ειναι για read ΚΑΙ write
                         0,//Πρέπει να είναι 0
                         NULL,//Πρέπαι να είναι NULL
                         OPEN_EXISTING,//Επειδή προσπελαυνω την θύρα σαν ερχείο πρέπει να εχει αυτη την τιμή
                         FILE_ATTRIBUTE_NORMAL,//Ομοίως με παραπάνω
                         NULL);//Πρέπει να είναι NULL

if(hSerialPort == INVALID_HANDLE_VALUE)
   return FALSE;

}




//Ρύθμιση παραμέτρων στην serial port
BOOL ConfigParameters(){

    COMMPROP commProp;
    DCB commDCB;
    BOOL fSuccess = FALSE;

    memset(&commDCB, 0, sizeof(DCB));
    //Χρησιμοποιείται για να ΕΜΦΑΝΙΣΕΙ τις προκαθορισμένες παραμέτρους της θύρας
    if(GetCommState(hSerialPort, &commDCB)) {
        // Can we change the baud rate? Let's check the commProp
        if(commProp.dwSettableParams && SP_BAUD) {
            commDCB.fRtsControl=RTS_CONTROL_TOGGLE;
            commDCB.BaudRate = BAUD_57600;
            commDCB.BaudRate = BAUD_9600;
            commDCB.fParity = PARITY_NONE;
            commDCB.StopBits = ONESTOPBIT;
            commDCB.ByteSize = 8;
            //Χρησιμοποιείται για να ΑΛΛΑΞΕΙ τις προκαθορισμένες παραμέτρους της θύρας
            //και να δωσουμε τις τιμές που θέλουμε σε αυτή
            fSuccess = SetCommState(hSerialPort, &commDCB);
        return fSuccess;
        }
    }
}



//Ρύθμιση χρόνων αναμονής της serial port για
//εισοδο/εξοδο δεδομένων
BOOL serialTimeouts(){

COMMTIMEOUTS commTimeOut;
memset(&commTimeOut, 0, sizeof(COMMTIMEOUTS));

// Set the timeouts so that read operations will return
// immediately
commTimeOut.ReadIntervalTimeout = MAXDWORD; //Χρονικό οριο για την εισοδο
                                    // χαρακτήρων στην θύρα.Αν ειναι 0 τότε
                                    // δεν υπάρχουν χρονικά ορια
commTimeOut.ReadTotalTimeoutConstant = 0; //Το οριζουμε 0 αν δεν το χρησιμοποιουμε
commTimeOut.ReadTotalTimeoutMultiplier = 0; //Το οριζουμε 0 αν δεν το χρησιμοποιουμε

SetCommTimeouts(hSerialPort, &commTimeOut); //Εγγράφουμε τα παραπάνω δεδομένα στην καταλληλη struct


}






//Έλεγχουμε την ροή των δεδομένων απο και προς την σειριακή θύρα
//θέτοντας χρονικούς περιορισμούς ΜΕΤΑΞΥ ΤΩΝ χαρακτηρων που μεταφέρονται
//και δίνει την δυνατοτητα "διαλείματος" μεταξυ των χαρακτηρων
BOOL ControllingDataFlow(){
/*
BOOL SetCommBreak(HANDLE hFile);
BOOL ClearCommBreak(HANDLE hFile);
BOOL PurgeComm(HANDLE hFile, DWORD dwFlags);

*/
//EscapeCommFunction(hSerialPort, CLRDTR );
//return EscapeCommFunction(hSerialPort, SETDTR );

}

BOOL ClearCommError(){
//Χρησιμοποιειται σε περίπτωση που υπάρξει κάποιο λάθος
//κατα την μεταδοση των δεδομενων ετσι ωστε να το παρακάμψει
//και να συνεχισει την λειτουργία της!!

}


void closeComPort(void)
{
  CloseHandle(hSerialPort);
}


DWORD sendData (const char* data, DWORD size)
{
  DWORD numberOfBytesWritten;

  WriteFile(hSerialPort,
            data,
            size,
            &numberOfBytesWritten,
            0);

  return numberOfBytesWritten;
}


//Στελνει ενα χαρακτήρα σαν Interrupt την στιγμή που
//ηδη μεταφέρονται αλλοι χαρακτηρες.
BOOL sendOnlyOneCharacter(char interruptCharacter){

return TransmitCommChar(hSerialPort,interruptCharacter);

}


DWORD receiveData (char* data, DWORD size)
{
  DWORD numberOfBytesRead;

  ReadFile(hSerialPort,
           data,
           size,
           &numberOfBytesRead,
           0);

  return numberOfBytesRead;
}





#pragma argsused
int main(int argc, char* argv[])
{

    char *data="kiriakos";
    DWORD size=8;


    //Opening a Connection
    if(CreateF()){
        cout << "Create File function OK";
    }
    else{
        cout << "Create File function Problem";
    }


    //Configuring the Serial Port
    if(ConfigParameters()){
        cout << "\n"<< "ConfigParameters() function is OK!";
        cout << "\n"<< "----------------------------------------------------------------------------";
    }
    else{
        cout << "\n"<< "ConfigParameters() function problem!";
    }



    cout <<"\nData Send:" << sendData(data,size);
    //cout <<"\nThe new character is:" << sendOnlyOneCharacter('M');
    cout <<"\nData Receive:" << receiveData(data,size);
    //cout <<"\nControllingDataFlow:" << ControllingDataFlow();




    closeComPort();



    getchar();
    return 0;
}
//---------------------------------------------------------------------------
```



Αν το τρεξετε θα δείτε οτι πραγματι στελνει δεδομένα και τα δεχεται.Απο εκει και μετα δειτε τον και πείτε μου αν ειναι σωστός.

----------


## stom

> Καταρχήν γίνεται πολύ απλά με τα RTS και DTR.
> Τώρα για το TxD, ας πούμε πως είναι κάπως δύσκολο να το θέσουμε σε συνεχόμενο λογικό H, οκ βρίσκουμε άλλο τρόπο.
> 
>   Ας πούμε πως ρυθμίζουμε την σειριακή στα 9600,Ν,8,1  έτσι έχουμε 10 bit με περίοδο 1/9600=104μS  =>104μs ανά bit,
> έτσι λοιπόν στέλνουμε 1byte σε χρόνο 104μs*10=1040μS.
> Από ότι θυμάμαι η usart είναι συνέχεια σε λογικό H (-12V) και όταν  αρχίσει να στέλνει βάζει σε λογικό L (+12V) το start bit μετά ακολουθεί  το byte και τέλος το stop bit.
> 
> Αν στο πρόγραμμα του pc φτιάξουμε ένα while loop που όταν πατάμε ένα  button να στέλνει συνέχεια το dec(0) η τον char (null) με ένα delay κάθε  φορά 2mS,
> τότε λογικά θα έχουμε έναν παλμό στο TxD με περίοδο ~2mS και με ~50% dutty cycle .
> Αυτόν τον παλμό (500hz/50% dutty cycle) θα τον οδηγήσουμε στην βάση του τρανζίστορ και θα οπλίζει το ρελέ.



Θα βαλουμε και ενα πυκνωτη να κανει λιγη ολοκληρωση και ολα καλα?
Και το pc να δουλευει υπερωριες να στελνει συνεχως χαρακτηρες.... 
Τι να πω.. αν αυτο το θεωρεις σωστο και το συστηνεις σε εναν αρχαριο που δεν εχει ιδεα απο hardware...

Μια χαρα ειναι ο κωδικας του dotnet αλλα δεν υπαρχει κατι να του μιλησεις.
Συνδεσε το ρελε στο dtr και οταν "ανοιξεις" το αρχειο για εγγραφη, θα ενεργοποιηται το dtr και κατ επεκταση το ρελε.

Ετσι οπως σε βλεπω ομως, παρε ενα arduino να παιξεις, θα το βρεις πιο ενδιαφερον γενικοτερα..

----------


## xarda

Απεύθείας να συνδεσω πανω στην θύρα το ρελε ???
Ρεύμα απο πού θα παίρνει ?

----------


## spiroscfu

> Θα βαλουμε και ενα πυκνωτη να κανει λιγη ολοκληρωση και ολα καλα?
> Και το pc να δουλευει υπερωριες να στελνει συνεχως χαρακτηρες.... 
> Τι να πω.. αν αυτο το θεωρεις σωστο και το συστηνεις σε εναν αρχαριο που δεν εχει ιδεα απο hardware...



Όχι πυκνωτή δεν χρειάζεται, το πολύ να μεγαλώσει λίγο το dutty cycle μικραίνοντας το χρόνο (minimum 1,1mS).
Για το pc δεν είναι υπερωρίες  να στέλνει ένα χαρακτήρα ανά 1 με 2mS.
Τι το δύσκολο ή κακό έχει σε σχέση με το DTR/RTS.

----------


## stom

Οταν υπαρχει το dtr, η προσεγγιση του να στελνουμε παλμους τους οποιους ολοκληρωνει το πηνιο του ρελε με την υστερηση του ειναι κακος σχεδιασμος.
Οπως και το γεγονος οτι πρεπει να στελνεις συνεχως παλμους ανα 1-2msec. Αν αργησει ο χαρακτηρας για οποιοδηποτε λογο, θα ξε-οπλισει το ρελε.

----------


## GeorgeVita

> ... Αν αργήσει ο χαρακτήρας για οποιοδήποτε λόγο, θα ξε-οπλίσει το ρελέ.



Δηλαδή υλοποίηση *watch dog*! Επιπλέον ασφάλεια στην εφαρμογή ...

*@xarda*: θα φτιάξεις το κύκλωμα που είναι στο σχόλιο 29 αλλά θα χρησιμοποιήσεις το *DTR (pin 4)* αντί του TXD (pin 3). Μετά θα ελέγξεις ότι το πρόγραμμα χρησιμοποιεί το DTR ("hardware handshaking") και όπως έγραψε ο stom θα κάνεις OPEN/CLOSE το com port παρατηρώντας τι κάνει το ρελέ. Με ένα πολύμετρο μπορείς να μετρήσεις την τάση στο DTR (pin 4). Πρέπει να μεταβάλλεται από +5...12V στο OPEN PORT σε -5...-12V στο CLOSE PORT.

Αν σε ενδιαφέρει η εφαρμογή του θέματός σου πρέπει να πιάσεις λίγο κολλητήρι.

G

----------


## xarda

Οκ κατάλαβα thanks!  :Smile: 
Η com port θα μπορέσει να δωσει ρευμα στο ρελε ?
Μήπως θα καεί ? ( δεν ξέρω λέω παιδες!! )

----------


## GeorgeVita

Η σειριακή πόρτα οδηγεί το τρανζίστορ με λίγα mA.
Το ρελέ τροφοδοτείται από την άλλη τάση, στο σχέδιο δείχνει 5V και ρελέ με πηνίο 5V.
Αν θέλεις μπορείς να χρησιμοποιήσεις ρελέ με πηνίο 12V και να τροφοδοτήσεις εκεί που γράφει 5V με 12V (η τροφοδοσία θα ταιριάζει με την τάση που θέλει το πηνίο του ρελέ). Πάντα μιλάμε για τάσεις DC. 

Το ρελέ που θα βάλεις θα είναι ρελέ μικρής ισχύος με πηνίο που θα "τραβάει" λίγα mA (30-80mA). Το τελικό κύκλωμα θα έχει 2ο μεγαλύτερο ρελέ που θα ενεργοποιείται από τις επαφές αυτού που περιγράφουμε τώρα.

Πρόσεξε: αν σε αυτά που γράφω έχεις απορίες σημαίνει ότι δεν έχεις βασικές γνώσεις (τρανζίστορ, ρελέ, νόμος Ωμ, απλές συνδεσμολογίες). Δεν αρκεί ένα προγραμματάκι για να φτιάξουμε έναν αυτοματισμό! Σε περίπτωση που δυσκολεύεσαι πάρε βοήθεια από κάποιο φίλο σου που γνωρίζει περισσότερα στα ηλεκτρολογικά/ηλεκτρονικά για να κάνεις τα πρώτα πρακτικά βήματα.

G

----------


## stom

Ετσι κιαλλιως το τρανζιστορ δεν το γλιτωνει για να οδηγησει το ρελε. Το πολυ πολυ να βαλει δυο.
Αλλα γιατι ξανανακαλυπτουμε το τροχο?
Ας βαλει ενα uln2003 και να οδηγησει οτι ρελε θελει.
Οσο για το watchdog.... οπως προφανως γνωριζεις δεν ειναι ακριβως αυτο, ασε που τα 1-2 msec παραειναι λιγος χρονος.
Θα το ξαναπω και ας γινομαι κουραστικος. Για οσους ΔΕΝ κατεχουν το αθλημα της ηλεκτρονικης ουτε στα βασικα, να κοιταξουν κατα arduino μερια, που ειναι σχεδιασμενο ακομα και για καλλιτεχνες..(οχι απαραιτητα ηλεκτρονικους καλλιτεχνες)

----------


## xarda

Ομολογω πως δεν ξέρω ουτε τα βασικά.Είναι η πρωτη φορα που ασχολουμαι με κάτι τετοιο.Σιγά σιγα και με διαβασμα θα τα μάθω και θελω να φτασω σε ενα επιπεδο οπου να μπορώ να εξυπηρετώ τις ανάγκες μου ( ως χομπυ το βλέπω  :Smile:  καθώς περισσοτερο προγραμματίζω ).
Απο εκεί και μετά.Επειδή τωρα εχω κάτι λαμπάκια χριστουγεννιατικα και πολύμετρο μπορώ να δω αν λειτουργεί ? ( για αρχή τουλάχιστον )
Μπορείτε να μου πείτε σε ποια pins ακριβώς πρεπει να συνδεσω και τι ?

----------


## xarda

:Lol:  :Lol:  :Lol:  :Lol:  :Lol:  :Lol:  :Lol: 

Ανοιξα το πολύμετρο και σύμφωνα με την παρακάτω εικόνα και ακουμπώντας τις ακίδες στο pin 4 και στο pin 5 

RS232pinout.gif

πριν τρεξω το πρόγραμμα εχει -11.κατι Volt ενώ οταν το τρέχω έχει +11.κάτι VOLT!!!!

αυτό νομίζω σημαίνει οτι στέλνει πραγματι δεδομένα έτσι δεν είναι ?
Άρα λοιπόν αν κολλήσω εκεί 3-4 λαμπάκια λογικά θα πρέπει να ανάψουν ?

----------


## info@kalarakis.com

Δεν θα ανάψουν στη καλύτερη περίπτωση δεν θα κάψουν την έξοδο. Το ρεύμα που έχει είναι πολύ μικρό ακόμα και για led. Η τάση μπορεί να είναι -12 (=low) μεχρι +12 (=high) αλλα δεν μπορεί να οδηγήσει λαμπάκια μόνο την είσοδο από τρανζίστορ. Επί σεις κατά την εκκίνηση του υπολογιστή ανάλογα με την υλοποίηση της κάρτας και το λειτουργικό ή κατάσταση των σημάτων δεν είναι το ίδιο σε όλους τους υπολογιστές, τουλάχιστον μέχρι την αρχικοποίηση  από το λειτουργικό. Τα windows πχ αφού αρχικοποιήσουν τη σειριακή στέλνουν ένα @ για να δουν αν υπάρχει καμιά συσκευή προς αρχικοποίηση πάνω στη πόρτα.
Αφού τώρα ξεκινάς καλύτερα να πάρεις aruorino Πάρε το "τροχό" έτοιμο να γυρίζει και με την πήρα που θα αποκτήσεις θα δεις στο τέλος πώς γυρίζει αυτός ο "τροχός"

----------


## xarda

Εννοείς αυτό ?
Απο οσα διάβασα για το arduino ( και θελω να μου πειτε αν ειναι σωστο αυτο ) το arduino χωρίζετε σε δυο μέρη.

Το πρώτο ειναι το hardware και το δευτερο το software.

Το hardware είναι μια πλακέτα ετοιμη με μικροελεγκτή η οποία συνδέεται μεσω usb στον υπολογιστή.Η κάθε πλακέτα ανάλογα με την επιλογή μας κάνει μια ξεχωριστή δουλειά π.χ ανάβει led , τρεχει ενα μοτερακι κ.τ.λ.

Το software είναι αυτό το οποίο χειρίζεται το software.Εκεί μπορούμε να προγραμματίσουμε σε γλώσσα c++ τι θέλουμε να κάνει η πλακέτα μας.

Για να δούμε αν λειτουργεί το hardware θα πρεπει απαραιτήτως να το αγοράσουμε ( αυτο το λέω γιατι μάλλον δεν υπάρχει κάποιος προσομοιωτης software για το arduino ) οπότε θα πρεπει να το αγοράσουμε.



Για αρχή να αγοράσω το Arduino Uno για να μάθω τα βασικά απο εδώ η να αγορασω ολοκληρο το πακετο απο εδω?

----------


## stom

Η γλωσσα του Arduino  ειναι μια c-like γλωσσα. Γενικα την c++ σε embedded πραγματακια την ψιλοξεχνας. Απλη C ειναι αρκετή.
To νοημα του arduino ειναι να σου κρυψει την πολυπλοκοτητα του hardware. Το να ζητας να το κανεις και simulate ειναι καπως ανορθοδοξο, για να το πω κομψα.
Γενικα το arduino Uno ειναι μια καλη αρχή. Τα συνοδευτικα που βλεπω ειναι για να κανεις δικα σου πραγματα (κατι που δεν εισαι ετοιμος ακομα).
Κινησου στον κοσμο των arduino shields, ειναι πιο μασημενος.
Και ψαξε και συγκρινε και τιμες εκτος ελλαδος.
Η ερευνα και η μελετη ειναι το 70% για αυτο που εχεις καταπιαστει και ψαχνεις.

----------


## xarda

Για να καταλάβω και εγώ 100%.Το arduino uno ( μονο του ) μπορεί να χρησιμοποιηθεί ΜΟΝΟ για να δημιουργησεις  ( ας πουμε ) τα δικά σου shields ?
Απο την αλλη ειδα οτι υπαρχουν ετοιμα shields οπως αυτό που κάνεις κατ'ευθειαν την δουλειά σου ΧΩΡΙΣ να αγορασεις το arduino uno ?
( εμενα με ενδιαφερει περισσοτερο να προγραμματίζω και οχι να φτιαχνω τις πλακέτες )

----------


## stom

Ολα τα arduinia φτιαχτηκαν για αυτο το σκοπο. plug and play hardware και σχετικα απλος προγραμματισμος. Τα shields ειναι οι επεκτασεις του σε hardware, και φυσικα ειναι ετοιμα. Το να φτιαξεις shields, ειναι τελειως αλλο θεμα και προφανως δεν ειναι δουλεια για αρχαρίους

----------


## klik

Μήπως να ρωτήσεις αν μπορεί να σου το κάνει κάποιος άλλος; (σχηματικά και πρόγραμμα για μικροελεγκτή).
Βλέπω ότι έχεις γνώσεις προγραμματισμού, άρα θα μπορέσεις να καταλάβεις και το πρόγραμμα του μικροελεγκτή. 

Αν είναι να μπλέκεσαι με arduino, πιο φτηνά θα σου βγει η παραπάνω λύση.
Στο hardware πονάς, οπότε πρέπει να χάσεις χρόνο ψάχνοντας μόνος σου ή να το πάρεις έτοιμο σχεδιάγραμμα.

----------


## stom

Η λεξη μπλεκεσαι αναφερεται προφανως στο να στο φιαξει καποιος αλλος (και να το κανει και debug ε?)
Το arduino ειναι ακριβως για να ΜΗΝ μπλεκεσαι.
Αν το βρισκεις ακριβο, προσπαθησε να κοστολογησεις ποσο κανει να στο φτιαξει καποιος custom....

----------


## xarda

Δηλαδή αν πάρω το πακέτο αυτό με ολα τα εξαρτηματακια που έχει και αφου συνδεσω το arduino uno στο pc φτιαξω ενα κυκλωματακι με ενα led πάνω στο πάνελ  ( και το προγραμματισω ) δεν θα αναψει το led ? Πρέπει δηλαδη να αγορασω και το shield για τα ledakia σαν extra ?Νομίζω πως αν αγορασω το σετ αυτο και δω σχεδια στο ιντερνετ κάτι θα καταφερω να κάνω και θα μάθω.Τι λέτε ?

Στην σχολή μου πριν κάτι χρονια προγραμματίζαμε σε assembly τον BGC-8088 και αναβαν ορισμένα leds που εχει πάνω του.Επίσης είχαμε και ενα αλλο μαθημα με το οποίο προγραμματιζαμε τον *PIC16**F877*  αλλα ψιλά πραγματα.

----------


## stom

Η εννοια του shield ειναι για να ΜΗΝ χρειαζεται να συνδεσεις ηλεκτρονικα εξαρτηματα.  Και οταν θες να ψαξεις ΟΟΟΛΑ τα αλλα εεε θες να εισαι ψιλοσιγουρος οτι δεν εχεις συνδεσει το led αναποδα και παιδευεσαι τσαμπα.
Απο κει και περα, ΟΛΑ γινονται.

----------


## xarda

Οκ καταλαβα αρκετά πραγματα.
Σκέφτομαι οτι απο την στιγμή που δεν με "καιει" το θέμα για να φτιαξω αμεσα μια τετοια εφαρμογη , θα είναι καλύτερα να αγοράσω τα βασικά και να φτιαχνω κυκλωματακια με μπαταρια κ.τ.λ.Απο πού μπορώ να τα προμηθευτώ ομως ?Τα μαγαζια που εχουν διαφορα ηλεκτρονικά εχουν αυτα που χρειάζομαι ?

----------


## stom

Στα μαγαζια υπαρχουν διαφορα.. Αφου δεν ξερουμε τι θελεις να φτιαξεις, τι να σου απαντησω?
Επιμενω ομως οτι αν δεν εχεις αναψει ποτε ενα led μαλλον θα καψεις αρκετα πιο ακριβα πραγματα για να μαθεις, αν αρχισεις να παιζεις με εξαρτηματα.

----------


## xarda

lol !!  :Smile: 
Και εγω αυτο σκεφτομαι stom και μάλλον θα πρεπει να τα πιασω απο την αρχη πριν καψω αλλα...

Εχεις καποιο λινκ για εναν αρχαριο που εχει απλα κυκλωματακια για εκπαιδευση και να μου πείς τι θα χρειαστεί να αγορασω ?
Δίνω για αρχή 30 - 40 ευρω για να τα παρω no problem.( τωρα μονο κολλητηρι , καλαϊ και πολύμετρο εχω! )

----------


## stom

Υποθετω οτι τα αγγλικα δεν σου ειναι προβλημα....
Θα σου συνιστουσα αυτό με κλειστα τα ματια.
http://www.smileymicros.com/index.ph...sition=136:136
περιπου 110 ευρω, arduino, υλικα + βιβλιο.
Και με usps θα το χεις λογικα σε καμμια 10 ρια μερες, χωρις αλλα κοστη.
Μπορεις παντα να παρεις μονο το βιβλιο και τα υπολοιπα οπου τα βρεις.. Αλλα οι διαφορες θα ειναι μικρες, αν υπαρχουν.

----------


## xarda

Βρήκα και κάτεβασα βιβλία και οδηγίες για το arduino.Εγω ελεγα να μην παρω καθολου το arduino γιατι οπως είπαμε θα τα κάψω αν γίνει καποιο λάθος.
Μαλλον θα παραγγειλω ολοκληρο το πακέτο με το arduino + υλικα και επειδη εχω βρει κάποια pdf με οδηγίες πιστευω πως δεν θα ανατιναχτει!!
71 ευρώ ομως είναι ποσό ....

----------


## spiroscfu

> Στην σχολή μου πριν κάτι χρονια προγραμματίζαμε σε assembly τον BGC-8088 και αναβαν ορισμένα leds που εχει πάνω του.Επίσης είχαμε και ενα αλλο μαθημα με το οποίο προγραμματιζαμε τον *PIC16**F877*  αλλα ψιλά πραγματα.



Θα σου συνιστούσα αν ασχολήσε με ηλεκτρονικά να ξεκινήσεις με κάποιον pic ή avr, για να καταλάβεις ποιο καλά την αρχιτεκτονική τους.

----------


## stom

To arduino ΕΙΝΑΙ avr. Μπορεις να κατεβεις οσο χαμηλα θες, ακομα και να καταργησεις το arduino code και να το προγραμματισεις σε assembly.
Αυτα ομως ειναι πιο hardcore. Μπορει το να αναψεις ενα led να ειναι ευκολο ακομα και σε assembly, το να φτιαξεις ομως ενα device που να διαβαζει στιγμα απο gps και να στο δινει σε ethernet σε assembly (αλλα και σε C) ειναι project για λιγους. Με arduino ειναι ταξεις μεγεθους πιο απλο.
Και η λογικη ειναι οτι το arduino ειναι φτηνο ωστε να σου επιτρεπει να το καψεις.
Για arduino θα βρεις πολλα. Ομως μαζι με βιβλιο που θα  σε εισαγει και στις βασικες γνωσεις ηλεκτρονικων γυρω απο μικροπεπεξεργαστες σε μορφη μαθηματος, πρεπει να μαζεψεις διαφορα, απο πολλες πηγες να τα διαβασεις ΟΛΑ και να ξεκαθαρισεις αυτα που χρειαζεσαι.
Στο οχι και τοσο μακρινο παρελθον, ενα αναπτυξιακο για μικροπεξεργαστες εκανε τουλαχιστον 300-400 ευρω και φυσικα δεν ελεγε ΚΟΥΒΕΝΤΑ για  το πως θα μιλησει ο επεξεργαστης με το περιβαλλον, και απευθυνοταν σε επαγγελματιες.
ΑΝ νομιζεις οτι 50-100 ευρω ειναι πολλα για μια συνολικη και αρκετα βαθια εισαγωγη στο κοσμο του embeded computing τοτε ξεχνα τα ολα αυτα, βρες κανενα κειμενο για πειραματα με το 555 και μην το κουραζουμε

----------


## xarda

thanks stom!
Κατάλαβα.Θα αγοράσω το πακέτο του arduino με  τα υλικά τελικά!

----------


## klik

Για ethernet, usb κλπ, για κάποιον με γνώσεις προγραμματισμού καλύτερη λύση είναι τα embeded linux.
Τα arduino είναι για άσχετους και σε software και σε hardware.
Για rs232, led, rele, character lcd αρκούν απλοί μικροελεγκτές με ελάχιστα περιφερειακά σε bread board και κόστος αρκετά χαμηλό.

Don't use a hammer to kill a mosquito

----------


## xarda

χαχαχαχαχα ξανά πίσω και απο την αρχή!
klik συμφωνω μαζί σου και νομίζω οτι αυτο ειναι και το σωστό.
Λοιπόν στην σχολή είχαμε ενα μάθημα "Προγραμματισμός συστημάτων πραγματικού χρόνου" ( real time ) στο οποίο οπως γραφω και πιο πάνω προγραμματίζαμε μικροελεγκτές σε assembly.
Ωραία μεχρι εδώ.

1.Επειδή εχω ξεχάσει τι και πώς δηλαδη μεσω ποιου προγραμματος μπορώ να και πάλι να προγραμματίσω ? ( γνωρίζετε καποιο στα windows ? )
2.Τι θα χρειαστώ ( εννοω τα υλικά δλδ μικροεπεξεργαστη φυσικά , αντιστάσεις κ.τ.λ ) για να προγραμματίζω τον μικροελεγκτή ?
3.Εχετε κάποιο πακέτο-link για να αγορασω και να μην στραφω στο arduino ?

( δεν θέλω να στραφώ στα linux ( τα είχα περυσι σε dual bot αλλα δεν ηταν συμβατα με συσκευες απο το pc Μου και τα εβγαλα )

----------


## spiroscfu

http://www.hlektronika.gr/forum/forumdisplay.php?f=315

----------

