PDA

Επιστροφή στο Forum : Τηλεχειρισμος.



dal_kos
28-08-06, 22:04
Θελω να φτιαξω ενα κυκλωμα τηλεχειρισμου για εναν ενισχυτη. :D

Οι επιλογες ειναι οι εξης:
α) Μονο On-Off
β) Να ελεγχει και την ενταση
γ) Να ελεγχει και το equalizer.

Η ενταση και το equalizer ρυθμιζονται ηδη απο ψηφιακα ποτενσιομετρα.

Εχετε καμια ιδεα? Γιατι στο ιντερνετ που εψαξα οτι βρηκα χρησιμοποιουσε chip κι αλλα εξαρτηματα που δεν κυκλοφορουν πια :evil:

Καθε βοηθεια ευπροσδεκτη.

dal_kos
29-08-06, 16:01
Βρήκα αυτο το κυκλωμα http://jap.hu/electronic/codec-v4.0.html το οποιο ειναι με RF.

Εχω τις εξης αποριες: Αυτο εδω κανει για την λήψη? http://www.spelektroniikka.fi/kuvat/amda.pdf

Αυτο εδω για την μεταδοση απο το τηλεχειρηστήριο? http://www.spelektroniikka.fi/kuvat/sawosc6.pdf

Αυτα τα κυκλωματα μπορουν να ελεγχουν τα ποτενσιομετρα μου? Και πως θα πρεπει να γινει η συνδεση? :?:

Τα ποτενσιομετρα ειναι αυτα: http://www.maxim-ic.com/quick_view2.cfm/qv_pk/2568

Δεν ξερω αν ειναι σωστα διοτι δεν εχω ξαναασχοληθει με τετοια κυκλωματα :(

Καθε βοηθεια ευπροσδεκτη

gsmaster
29-08-06, 16:36
Ξεκίνα να μελετάς το RC5. Είναι προτόκολλο της philips για τηλεχειριστήρια. Οπότε βάζεις έναν μικροελεκτή με ένα TSOP1738 και κάνεις ότι θες. Για τηλεχειριστήριο μπορείς να χρησιμοποιήσεις ένα απο philips ή κάποιο συμβατό των 5 ευρώ

dal_kos
29-08-06, 18:39
Φοβαμαι πως δεν μπορω να κανω ενα τετοιο κυκλωμα απο το μηδεν :(

Δεν εχω ξαναασχοληθει με μικροελεγκτες. Αυτο που βρηκα και αναφερω παραπανω εχει ετοιμο και το προγραμμα και το κυκλωμα.

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

Ευχαριστω

dal_kos
29-08-06, 20:57
Στη θεση των RF modules μπορω να βαλω ενα δεκτη και ενα πομπο υπερυθρων αντιστοιχα??

gsmaster
29-08-06, 21:28
Ποιά RF modules, γιατί το μπλέκεις το πράγμα. Υπέρυθρες θα χρησιμοποιήσεις όπως είναι όλες οι τηλεοράσεις. Τώρα αν θες RF κάπως μπλέκεται το πράγμα, πρέπει να φτιάξεις και τηλχειριστήριο

dal_kos
30-08-06, 01:17
ΟΚ. Μηπως εχετε να προτεινετε καποιο συγκεκριμενο LED με υψηλη αποδωση για το τηλεχειριστηριο και για τον δεκτη??

chip
30-08-06, 13:55
Όπως η philips έχει βγάλει τα chip κωδικοκποίησης RC5 έχει βγάλει και chip αποκωδικοποίησης. Αν δυσκολεύεσε να βρεις ποιο είναι πές μου να κοιτάξω δεν το θυμάμαι απ' έξω (το alshaimer... :D )! Πιθανότατα κατεβάζοντας το datasheet του RC5 κωδικοποιητή να αναφέρει και το chip αποκωδικοποίησης.
Βέβαια επειδή πλέον όλα τα μηχανήματα έχουν και μικροελεγκτή ο οποίος μπορεί να κάνει και την αποκοδικοποίηση, οι κατασκευαστές δεν χρησιμοποιούσαν το chip αποκοδικοποίησης της philips οπότε το έβγαλε από την κυκλοφορία. Βέβαια πιστεύω υπάρχει ακόμα σε Stock στα καταστήματα και αφού δεν θες mcu ίσως είναι μία λύση.
Το κύκλωμα RF που πόσταρες είναι κλασικό κύκλωμα που χρησιμοποιούν οι φτηνιάριδες τηλεχειρισμοί.
Μην ασχοληθείς μαζί του θα σου δημιουργήσει πολλά προβλήματα (αποσυντονισμού). Όπως καλα σου είπαν οι άλλοι φίλοι του Forum θα το κάνεις με υπέρηθρες όπως κάνουν όλοι οι κατασκευαστές.

chip
30-08-06, 13:59
Οπς και μια συμπλήρωση...
Το κύκλωμα του πομπού είναι επίσης κλασικό πομπού, δεν είναι κακό αλλά δεν θα βρίσκεις (ή θα το βρίσκεις ακριβό) το SAW.

dal_kos
30-08-06, 14:27
Πανω στο κυκλωμα αυτου μπορω να βαλω υπερυθρες?

Δεν νομιζω πως το rc5 της Philips μπορω να το χρησιμοποιησω. Εγω θελω ενα κυκλωμα που θα "πατα" διακοπτες απο το τηλεχειρηστηριο. Το RC5 ειναι απ οτι ειδα για ελεγχο καναλιων και τετοια. εγω θελω να το χρησιμοποιησω σε ενισχυτη. Το κυκλωμα με τα 11 κουμπια ειναι ακριβως αυτο που θελω.Θελω αυξομοιωση equalizer, ρυθμιση εντασης και balance και ον-οφ. [Ολα τα προηγουμενα θα ελεγχονται απο push buttons παραλληλα στα οποια θα βαλω μαλλον μικρα solid state relays]

chip
30-08-06, 23:29
Tα ολοκληρωμένα RC5 έχουν φτιαχτεί για να δουλεύουν με υπέρυθρες. Δεν έχω μελετήσει τις λειτουργίες από το chip του δέκτη πάντως σα πρότυπο θεωρεί οτι θα κάνει όλους αυτούς του ελέγχους που αναφέρεις. Φτιάχτηκε για να ελέγχει όλες τις οικιακές συσκευές (και στερεοφωνικά) και χρησιμοποιείτε από τους 9 στους 10 κατασκευαστές.
Πέρα από αυτά, τι ενοείς λεγοντας relay στερεάς κατάστασης? Αν εννοείς αυτο που οι εταιρίες το αναφέρουν σα solid state relay (ίσως βέβαια να έχεις βρει κάποια εξαίρεση) δεν μπορεί να χρησιμοποιηθεί στην εφαρμόγή σου γιατί βασίζονται σε triac όποτε υποχρεωτικά το φορτίου που ελέγχουν πρέπει να είναι εναλλασσώμενη τάση.

chip
30-08-06, 23:31
¶ ξέχασα υπάρχουν πολύ πιο απλές λύσεις αντί των relay για την εφαρμογή (όπως την φαντάζομαι) όπως πύλες OR έιτε σαν chip είτε σχηματισμένες με διοδάκια 1n4148

dal_kos
31-08-06, 00:09
¶ ξέχασα υπάρχουν πολύ πιο απλές λύσεις αντί των relay για την εφαρμογή (όπως την φαντάζομαι) όπως πύλες OR έιτε σαν chip είτε σχηματισμένες με διοδάκια 1n4148

Μηπως μπορεις να δωσεις ενα απλο κυκλωμα με διοδους?
Το συστημα κανονικα ειναι για να αναβει led.. εγω θελω αντι για led να βαλω κατι το οποιο θα λειτουργει σαν διακοπτης παραλληλα με τον κανονικο διακοπτη που θα ειναι για την ρυθμιση απο το ιδιο το συστημα.

Παραθετω σχηματικο πως το σκεφτομαι.

ps: http://www.vishay.com/solid-state-relays/list/product-83825/ αυτο ειναι το solid state relay που σκεφτομαι

dal_kos
31-08-06, 00:09
:arrow:

chip
31-08-06, 09:44
Τα relay που προτείνεις κάνουν για τη δουλειά που σκέφτεσαι. (δεν είναι σαν αυτά που είχα στο μυαλό μου) Επίσης τέτοια relay φτιάχνει και η cp-clare. Μπορείς να τα βρεις σε δείγματα? γιατι διαφορετικά δεν θα είναι πιστευω ιδαιτερα εύκολο να τα βρεις στα καταστήματα. Το κύκλωμα θα το κοιτάξω το μεσημέρι και θα σου απαντήσω ή το βράδυ ή αύριο προϊ.

dal_kos
31-08-06, 10:13
Εχω ζητησει δειγματα αλλα μου εχει ερθει μονο το αυτοματο e-mail. :(
Σημερα θα τους στειλω e-mail για να δω τι θα γινει...

dal_kos
05-09-06, 14:36
Λοιπον μετα απο πολλη σκεψη κατεληξα οτι μαλλον καλο ειναι να χρησιμοποιηθει ενας μικροελεγκτης για τον ελεγχο ολοκληρου του συστηματος.

Απ ο,τι φαινεται θα πρεπει ο μικροελεγκτης που θα λειτουργει και σαν δεκτης να εχει πολυ περισσοτερες πορτες.

Πανω του θα συνδεθουν:
1)Τα ποτενσιομετρα[τα οποια θα πρεπει να ελεγχονται απο δυο πορτες το καθενα καθως θελουν ενα bit εναλλασομενο[High-low] κι ενα bit που οταν ειναι υψηλο ανεβαζουν κι οταν ειναι χαμηλο κατεβαζουν την αντισταση τους. Τα ποτενσιομετρα ειναι συνολικα 3
2)Οι διακοπτες του πανελ που θα ειναι 6 για τα ποτενσιομετρα[3 πανω 3 κατω] + 3 για την ρυθμιση της εντασης, + αλλος ενας για το On-Off αν μπορει να γινει μεσω του μικροελεγκτη.
3)Ο μικροελεγκτης θα εχει μεσα του παραλληλα και το προγραμμα για τον τηλεχειρισμο.
4)Αν γινεται θα ηθελα να βγαινουν πληροφοριες και σε μια LCD [μηπως ζηταω πολλα? :roll: ]
Συνολο: 24 πορτες σιγουρα και ισως και παραπανω λογω του module υπερυθρων.

Θα ηθελα να μου πειτε ποιος μικροελεγκτης ειναι καταλληλος γι αυτη τη δουλεια και ποιος μπορει να βοηθησει στην κατασκευη του προγραμματος.
Ειτε με το αζημιωτο ειτε σαν project του hlektronika.gr :wink:

Ευχαριστω προκαταβολικα Κωστας

gsmaster
05-09-06, 14:48
Χμμμ μάλλον εννοείς 24 πιν και όχι πόρτες. Μια πόρτα έχει συνήθως 8 πιν.

Η προσέγγιση που χρησιμοποιείς είναι λίγο ασύμφορη στον αριθμό πιν. μπορείς να χρησιμοποιήσεις άλλα ποτενσιόμετρα που προγραμματίζονται σειριακά, και να βάλεις όσα θες σε δυο-τρια πιν του μΕ.

Τα πλήκτρα για να ελέγχεις τοπικα τον ενισχυτή θα περνάνε μέσα απο τον μικροελεκτή, και θα εμφανίζεται στην οθόνη η σχετική ένδειξη. Για κάτι πιο προχωρημένο θα μπορούσες να βάλεις 4-5 πλήκτρα που θα λειτουγούν σαν μενού (Menu-Up-Down-Exit) αλλά αυτό έχει κάμποση δουλειά σε κώδικα....

Είναι μια πολύ καλή κατασκευή, και απαιτεί να έχεις καλή γνώση και εμπειρία στην συγγραφή κώδικα.


ΥΓ.: Δεν αξίζει να κάνεις κάτι τέτοιο την στιγμή που υπάρχει έτοιμος ενισχυτής με όλα αυτά και πολλά περισσότερα made in China.... Γενικά, ότι είναι made in china, δεν αξίζει να φτιάξεις κατι παρόμοιο. Απο οικονομικής άποψης και απο άποψη χρονου. Η ευχαριστηση της ιδιοκατασκευής είναι άλλο πράγμα, δεν μπορώ να πώ τίποτα.

dal_kos
05-09-06, 14:57
Pin εννοουσα. Εκανα λαθος. ;)

Αυτο με το μενου θα ειναι αρκετο ενδιαφερον αλλα δεν νομιζω πως θα ειχε καποιος ορεξη να το κανει[απ τη στιγμη που δεν θα γραψω εγω τον κωδικα]

Μπορει να εχεις δικιο αλλα ειναι η χαρα της δημιουργιας[θα μου πεις ποια δημιουργια αφου αλλος θα σου φτιαξει το κωδικα... αλλα οπως και να εχει ειναι πιο ωραιο απο το ετοιμο.]

Αν μπορουσε καποιος να βοηθησει....

DT200
05-09-06, 17:17
Λοιπόν φίλε dal_kos δεν είχα παρακολουθήσει καιρό αυτή τη συζήτηση και είναι μία πρόκληση η όλη κατασκευή .
Θα σκεφτώ και εγώ μαζί με τα άλλα ‘παιδιά’ και κάτι θα κάνουμε !

Υ.Γ κάνε κουράγιο , έτσι είναι αυτά τα πράγματα !

dal_kos
05-09-06, 19:19
Οκ DT200 ευχαριστω.
Αν καποιος αλλος θελει και μπορει να βοηθησει ας το πει ωστε να μοιραστει το προγραμμα[γινεται αυτο... δεν γινεται?] και να μην μεινει το βαρος μονο σε ενα ατομο.

Ευχαριστω και παλι.

DT200
05-09-06, 20:55
Λοιπον μετα απο πολλη σκεψη κατεληξα οτι μαλλον καλο ειναι να χρησιμοποιηθει ενας μικροελεγκτης για τον ελεγχο ολοκληρου του συστηματος.

Αυτό είναι καλό :D


Πανω του θα συνδεθουν:
1)Τα ποτενσιομετρα[τα οποια θα πρεπει να ελεγχονται απο δυο πορτες το καθενα καθως θελουν ενα bit εναλλασομενο[High-low] κι ενα bit που οταν ειναι υψηλο ανεβαζουν κι οταν ειναι χαμηλο κατεβαζουν την αντισταση τους. Τα ποτενσιομετρα ειναι συνολικα 3

Ποια είναι αυτά τα τρία ? και τι κάνουν ?



2)Οι διακοπτες του πανελ που θα ειναι 6 για τα ποτενσιομετρα[3 πανω 3 κατω] + 3 για την ρυθμιση της εντασης, + αλλος ενας για το On-Off αν μπορει να γινει μεσω του μικροελεγκτη.

Για ξανά πέστο αυτό με περισσότερα λόγια



4)Αν γινεται θα ηθελα να βγαινουν πληροφοριες και σε μια LCD

Πες μας πως το φαντάζεσαι ? μην ντρέπεσαι ! πες εσύ και θα δούμε.

dal_kos
05-09-06, 21:25
Πανω του θα συνδεθουν:
1)Τα ποτενσιομετρα[τα οποια θα πρεπει να ελεγχονται απο δυο πορτες το καθενα καθως θελουν ενα bit εναλλασομενο[High-low] κι ενα bit που οταν ειναι υψηλο ανεβαζουν κι οταν ειναι χαμηλο κατεβαζουν την αντισταση τους. Τα ποτενσιομετρα ειναι συνολικα 3

Ποια είναι αυτά τα τρία ? και τι κάνουν ?


Αυτα τα τρια ποτενσιομετρα ρυθμιζουν το equalizer. Ειναι ενα για τα χαμηλα, ενα για τα μεσαια κι ενα για τα ψηλα. Ειναι non volative δηλαδη οταν απενεργοποιουνται κρατουν στην μνημη την τελευταια ρυθμιση



2)Οι διακοπτες του πανελ που θα ειναι 6 για τα ποτενσιομετρα[3 πανω 3 κατω] + 3 για την ρυθμιση της εντασης, + αλλος ενας για το On-Off αν μπορει να γινει μεσω του μικροελεγκτη.

Για ξανά πέστο αυτό με περισσότερα λόγια

Πανω στο πανελ του ενισχυτη θα υπαρχουν διακοπτες που θα ρυθμιζουν ολες τις λειτουργιες οπως θα γινετα και απο το τηλεκοντρολ.
Σκεφτομουν για ενα διακοπτη για καθε λειτουργια αλλα αν γινεται με ενα μενου θα ηταν ακομα πιο εντυπωσιακο.Αν γινεται σκεφτομαι μηπως το κυκλωμα ενεργοποιησης-απενεργοποιησης του ενισχυτη βρισκεται κι αυτο μεσα στον μικροελεγκτη δηλαδη οταν παταω ενα κουμπι να αναβει μεχρι να ξαναπατησω το ιδιο κουμπι.
Επισης το ποτενσιομετρο της εντασης πατωντας ενα πληκτρο αλλαζει λειτουργια και χρησιμοποιειται σαν ρυθμιση Βαlance.




4)Αν γινεται θα ηθελα να βγαινουν πληροφοριες και σε μια LCD

Πες μας πως το φαντάζεσαι ? μην ντρέπεσαι ! πες εσύ και θα δούμε.

Στην LCD θα ηθελα να βγαινουν οι πληροφοριες για την ενταση, το equalizer... Το σκεφτομαι με μπαρες που θα πηγαινουν δεξια-αριστερα και αναλογη της αποστασης τους απο το κεντρο θα ειναι και η μεταβολη των αντιστοιχων ποτενσιομετρων που θα δειχνουν[κανουν monitoring εννοω].

Αυτα. Οτι αλλη διευκρινηση χρειαζεται πες το ;)

dal_kos
05-09-06, 21:48
________________
|.......-Volume-......|
|-------||----------|
|.......-Balance-.....|
|---------||--------|
---------------------

dal_kos
05-09-06, 22:30
Να πως το σκεφτομαι: [δεν ξερω αν γινεται αυτη η μπαρα διπλα στο balance]

DT200
05-09-06, 22:45
Το καταλαβαίνεις ότι είναι πολύ δύσκολο το κόλπο με την LCD ,
Δεν έχω ‘οδηγήσει’ ξανά LCD με τέσσερις γραμμές και θέλει και πολλά pin



Επισης το ποτενσιομετρο της εντασης πατωντας ενα πληκτρο αλλαζει λειτουργια και χρησιμοποιειται σαν ρυθμιση Βαlance.

Αυτό το κάνει ήδη ?

Αν ξέρεις το νούμερο από τα ψηφιακά ποτενσιόμετρα στείλτε μου

dal_kos
05-09-06, 22:59
H lcd αν δεν κανω λαθος θελει 8 πινς.
Αν ειναι πιο ευκολο με 2 γραμμες οκ. Αν ειναι γενικα πολυ δυσκολο το αφηνουμε χωρις lcd.
Το ποτενσιομετρο εχει ηδη αυτη τη λειτουργια

dal_kos
05-09-06, 23:03
http://datasheets.maxim-ic.com/en/ds/MAX5450-MAX5455.pdf --> Τα ποτενσιομετρα των equalizer

http://datasheets.maxim-ic.com/en/ds/MAX5456-MAX5457.pdf --> Το ποτενσιομετρο της εντασης

DT200
05-09-06, 23:06
Ένα δύσκολο σημείο είμαι αυτό με την LCD , που θα δείχνει πόσο της εκατό βρίσκετε το ποτενσιόμετρο .

Για αυτό το λόγο σου ζήτησα τα νούμερα τους , ώστε να τα μελετήσω

dal_kos
05-09-06, 23:08
ΟΚ. Take your time!

Επειδη τα εχω παραγγειλει σαν δειγματα δεν βαζω και το χερι μου στη φωτια οτι θα τα παρω.... Οποτε αν υπαρχει καποια πιο ευκολη λυση απο αυτα μπορουμε να την δουμε ;)

DT200
05-09-06, 23:24
Όπως θα έχει καταλάβει θα προσπαθήσουμε να ενώσουμε πολλά διαφορετικά πράγματα μαζί , (δεν το έχω ξανά κάνει όλο αυτό , αλλά θα το παλέψουμε.)
Α) υπέρυθρη επικοινωνία
Β)ψηφιακά ποτενσιόμετρα
Γ) οθόνη LCD
Δ) Και ένα μεγάλο πρόγραμμα που θα τα οργανώσει όλα αυτά



ΟΚ. Take your time!

Επειδη τα εχω παραγγειλει σαν δειγματα δεν βαζω και το χερι μου στη φωτια οτι θα τα παρω.... Οποτε αν υπαρχει καποια πιο ευκολη λυση απο αυτα μπορουμε να την δουμε ;)

Ο ενισχυτής δεν έχει αυτή τη στιγμή ψηφιακά ποτενσιόμετρα ? πώς λειτουργεί τώρα ?

dal_kos
05-09-06, 23:50
Ο ενισχυτης οταν ειναι ετοιμος για αρχη θα δουλεψει με απλα ποτενσιμοτρα και μετα θα μπουν τα ψηφιακα.
Το προραμμα για τις υπερυθρες υπαρχει ηδη. Αν θες μπορω να στο στειλω αν και δεν φαινεται να ειναι σε mikrobasic που απ οτι καταλαβα ειναι η γλωσσα που θα γραφτει.

gsmaster
05-09-06, 23:52
Οι οθόνες με τον controller της Hitachi HD44780 ή συμβατές έχουν την ίδια διαδικασία οδήγησης. Βασικά λίγο σπάνιο να βρείς οθόνη που να μην είναι συμβατή με αυτές..
Έχουν 14 πιν εκ των οποίων με τον μικροελεκτή υποχρεωτικά συνδέονται τα 6 απο αυτά. Μπορείς να την βάλεις με όλα τα πινς, αλλά δεν αξίζει τον κόπο. Περισσότερα σ'αυτόν τον οδηγό για οθόνες LCD (http://www.hlektronika.gr/pafiledb/pafiledb.php?action=file&id=33)

Τα "γραφικά", οι μπάρες τέλως πάντως γίνονται, σχετικά εύκολα.

Το δύσκολο κομμάτι της κατασκευής είναι οι υπέρυθρες, αλλά υπάρχει άπειρη βιβλιογραφία στο ιντερνετ.

Επειδή τα ποτενσιόμετρα είναι ψηφιακα, αν δεν βάλεις οθόνη, δεν θα ξέρεις που βρίσκονται.

dal_kos
05-09-06, 23:55
Ο κωδικας του δεκτη. Ειναι για RF αλλα αν δεν κανω λαθος μπορει να χρησιμοποιηθει και με IR module
;************************************************* *********************
; *
; Filename: mrx-009.asm *
; Date: *
; File Version: *
; *
; Author: *
; http://jap.hu/ *
;************************************************* *********************
;NOTES
;
; Manchester decoding routine
;
; supposed crystal freq is 4MHz
; T ~= 620 usec (half bit)
;
;************************************************* *********************
;HISTORY
;
;000-20010108
;initial version, for MPSIM debugging - simple bit decoding tested
; - behaviour on errors is not tested
;
;001-20010108
;to be linked with other external sources
;
;002-20010109
;protocol decoding tested
;
; header = 16xbit1, 1xbit0 (min/max n. of bit1s in header reqs are not yet checked)
; byte = 8xbitX, 1xbit1, 1xbit0
;
; if not in header, max 9xbit1 or 9xbit0 can be received (which can't be sync'ed to)
;
;003-20010110
;radio receiving tested OK - debug info on LCD
; counting 0-4 encoding errors/rcvd packets, displaying protocol errors
;
;004-20010113
; same algorythm without using TMR0
; (whis is reserved for measuring timeouts)
;
;005-20010113
;debug on LED. 0=OK, other=error. Point shows validity
;
;006-20010113
;same as 005, plus check buffer checksum and devid
;
;007-20010113
;raw OUT, 5-byte buffer, adapt to C508
;
;008-20010121
;monitor version with LCD
;
;009-20010123
;raw OUT for the 16C505. Based on 007
;corresponding transmitter is mtx(014) for the 16C505,
; which sends the following format:
; data0 - - B5 B4 B3 B2 B1 B0
; data1 - - C5 C4 - C2 C1 C0
;
;this is mapped into the 16C620A pins as
; PB7-0 C5 C4 B5 B4 B3 B2 B1 B0
; PA2-0 - - - V - C2 C1 C0
;
;PA3 shows output validity.
;************************************************* *********************
;define F628
#define C620

; the only difference btw. generated C620 & F628 code is the fuse config

#ifdef F628
#define X62X
list p=16F628 ; list directive to define processor
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF
;WDT=watchdog, PWRTE=power on timer, XT=external crystal osc
#include <p16F628> ; processor specific variable definitions
#endif

#ifdef C620
#define X62X
list p=16c620a ; list directive to define processor
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF
;WDT=watchdog, PWRTE=power on timer, XT=external crystal osc
#include <p16c620a> ; processor specific variable definitions
#endif

#ifdef X62X
#define RXBIT PORTA, 4
#endif

#ifdef C508
listp=12c508
#include <p12C508>

__CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC

#define RXBIT GPIO, 3
#endif

;***** VARIABLES
#define IF_SHORT flags, 0
#define FIRST_HALF flags, 1
#define HEADER flags, 2
#define VALID flags, 7

if_short_valEQU1 ; bit value of IF_SHORT flag
first_half_valEQU2 ; bit value of FIRST_HALF flag

#ifdef X62X
.mainda UDATA 0x20
#endif

#ifdef C508
.mainda UDATA 0x07
#endif

bitcntres1
tmrvalres1 ; timer value
btres1 ; receive byte buffer
flagsres1 ; decode logic status
btcntres1 ; byte counter
agetmrres1 ; age out timer
bufferres4 ; receive packet buffer
bsumres1 ; receive buffer, checksum


;***** CONSTANT VALUES
hdrcntminEQU0x0c
hdrcntmaxEQU0x10

min_tEQU.34
min_2tEQU.104
max_2tEQU.174

age_maxEQU.15 ; age out last valid packet
packet_lenEQU5 ; packet length, check var. alloc!
devid1EQU0x9a
devid2EQU0xe9

#ifdef X62X
vectorsCODE 0
goto main; go to beginning of program
nop
nop
nop
; interrupt vector location
retfie

progCODE 5
#endif

#ifdef C508
CODE 0
movwf OSCCAL
goto hwinit_508
#endif

mp_receive; receive a full manchester-encoded packet

s3; set flags&#58; first_half=1, if_short=0
bsf FIRST_HALF
s4bcf IF_SHORT

s5; init before the received packet

; set FSR to buffer start
movlw buffer
movwf FSR
; set byte counter
movlw packet_len ; bytes / packet
movwf btcnt
; set header receive mode
bsf HEADER
clrf bitcnt ; counting bit1-s in this mode

s2; wait for a pulse
btfss RXBIT
goto s2

s6; wait for end of &#40;short&#41; pulse up to min_2t
clrf tmrval
s6_wbtfss RXBIT
goto s7 ; goto s7 at end of pulse

incf tmrval, F
nop
movlw min_2t
subwf tmrval, W
btfss STATUS, C
goto s6_w

; timeout, exit
retlw 1 ; illegal startbit

s7; start timer
clrf tmrval

s8; if &#40;if_short & rxbit&#41; goto s9
; if &#40;!if_short & !rxbit&#41; goto s9
; goto s10

btfsc IF_SHORT
; if_short = 1
goto s8_ss1

s8_ss0; if_short = 0
btfsc RXBIT
goto s10 ; rxbit = 1, goto s10

s9_ss0; if &#40;timer > max_2t&#41; exit - else goto s8
movlw max_2t
subwf tmrval, W
btfsc STATUS, C
retlw 2 ; signal too long

incf tmrval, F
goto s8_ss0

s8_ss1; if_short = 1
btfss RXBIT
goto s10 ; rxbit = 0, goto s10

s9_ss1; if &#40;timer > max_2t&#41; exit - else goto s8
movlw max_2t
subwf tmrval, W
btfsc STATUS, C
retlw 2 ; signal too long

incf tmrval, F
goto s8_ss1

s10; invert if_short
movlw if_short_val
xorwf flags, F

s11; if &#40;timer < min_t&#41; exit
movlw min_t
subwf tmrval, W
btfss STATUS, C
retlw 3 ; signal too short

s12; if &#40;timer < min_2t&#41; goto s14

movlw min_2t
subwf tmrval, W
btfss STATUS, C
goto s14

s13; if &#40;first_half = 0&#41; goto s16 - else exit
btfss FIRST_HALF
goto s16
retlw 4 ; no mid-frame transition/out of sync

s14; invert first_half
movlw first_half_val
xorwf flags, F

s15; if &#40;first_half = 1&#41; goto 7
btfsc FIRST_HALF
goto s7

s16; if_short is a decoded bit. Handle here
btfss HEADER
goto s16_not_header

; header receiving mode
btfss IF_SHORT
goto s16_header_end

; header bit is 1
btfss bitcnt, 4 ; inc up to 16
incf bitcnt, F ; 16 is enough...

call age ; age out even if never leaving this loop
#ifdef NOMAXHDR
; test for max header length
movlw hdrcntmax
subwf bitcnt, W
btfss STATUS, C
#endif
goto s7 ; loop back
retlw 9 ; header too long

s16_header_end; header ends indicated by a 0
bcf HEADER

; test for min header length
movlw hdrcntmin
subwf bitcnt, W
btfss STATUS, C
retlw 0x0a ; header too short

next_bytemovlw 0x0a
movwf bitcnt
goto s7 ; loop back

s16_not_header; receiving bytes
decf bitcnt, F
bz s16_s4 ; if &#40;bitcnt = 0&#41; check for a byte-sep 1

; if &#40;bitcnt = 1&#41; check for a byte-separator 0
movlw 1
xorwf bitcnt, W
bnz s16_s2

; test for a byte separator 1
btfsc IF_SHORT
goto s7
retlw 7 ; byte-ending 1 not present

s16_s2; bit is data

rrf flags, W
rlf bt, F
goto s7

s16_s4; check for a byte-separator 0
btfsc IF_SHORT
retlw 8 ; byte-ending 0 not present

; OK, received byte is sane, store in buffer
movf bt, W
movwf INDF
incf FSR, F

decfsz btcnt, F
goto next_byte

retlw 0 ; OK, buffer received

chk_buf; check buffer sanity by chksum
movlw buffer
movwf FSR
movlw &#40;packet_len-1&#41; ; number of bytes w/o the chksum byte
movwf btcnt
clrw

chk0addwf INDF, W
incf FSR, F
decfsz btcnt, F
goto chk0
;chksum is now in W

subwf bsum, W
bnz chk_err
retlw 0 ; result is in Z
chk_errretlw 0x0c ; checksum error

chk_devid;check if the device id is the same
; &#40;first two bytes&#41;

movlw devid1
subwf buffer, W
bnz chk_err2

movlw devid2
subwf &#40;buffer+1&#41;, W
bnz chk_err2

retlw 0 ; OK
chk_err2retlw 0x0d ; devid error

#ifdef C508
hwinit_508;C508 HARDWARE INIT
clrf GPIO
clrw; movlw 0x08
tris GPIO ; all except GP3 is output
clrwdt
movlw 0x47 ; no pullup on GP3 &#40;1&0 outputs&#41;
option
#endif

main
#ifdef X62X
;X62X HARDWARE INIT
clrf PORTA ;set output levels
clrf PORTB

movlw 0x10 ; PORTA4 is input
TRIS PORTA

MOVLW 0 ; PORTB outputs
TRIS PORTB

clrwdt ; changing default presc. assignment
movlw 0x87 ; prescaler 1&#58;256 assigned to TMR0
OPTION ; T0CS selects internal CLK

movlw 7
movwf CMCON ; disable analog comparators
#endif

clrf TMR0
call age_clr ; no valid packet

loopcall age
call mp_receive
andlw 0xff
bnz l_skip
call chk_buf
andlw 0xff
bnz l_skip
call chk_devid

l_skipmovwf bt ; 0=OK, other=error

movf bt, F
btfss STATUS, Z
goto loop

; rx was OK, turn on outputs
; buffer+2, buffer+3 contains state information

; set PA0-PA2 from C0, C1, C2
; set PA3 as High &#40;valid output&#41;
movf buffer+3, W
andlw 0x7
xorlw 0x0f
movwf PORTA

; shift C4, C5 to bit#6, bit#7
rlf buffer+3, F
rlf buffer+3, F
movlw 0x3f
iorwf buffer+3, F

; glue together C4, C5 with B0-B5
movlw 0xc0
iorwf buffer+2, W
andwf buffer+3, W
xorlw 0xff
movwf PORTB

; set age timer
call age_set

goto loop

age; time out last packet
btfss TMR0, 7
return

clrf TMR0
decfsz agetmr, F
return

age_clr; age out
bcf VALID
movlw age_max
movwf agetmr

clrf PORTA ; clear all outputs
clrf PORTB
return

age_set; validate now
bsf VALID
movlw age_max
movwf agetmr

; show validity here
return

end

DT200
06-09-06, 00:03
Οι οθόνες με τον controller της Hitachi HD44780 ή συμβατές έχουν την ίδια διαδικασία οδήγησης. Βασικά λίγο σπάνιο να βρείς οθόνη που να μην είναι συμβατή με αυτές..
Έχουν 14 πιν εκ των οποίων με τον μικροελεκτή υποχρεωτικά συνδέονται τα 6 απο αυτά. Μπορείς να την βάλεις με όλα τα πινς, αλλά δεν αξίζει τον κόπο. Περισσότερα σ'αυτόν τον οδηγό για οθόνες LCD (http://www.hlektronika.gr/pafiledb/pafiledb.php?action=file&id=33).
Ο φίλος dal_kos μου έφερε ένα παράδειγμα με οθόνη τεσσάρων γραμμών , που δε έχω χρησιμοποιήσει ακόμα (έχω αγοράσει δύο)
Και για αυτό είμαι επιφυλακτικός

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

Επειδή τα ποτενσιόμετρα είναι ψηφιακα, αν δεν βάλεις οθόνη, δεν θα ξέρεις που βρίσκονται.
Δεν ξέρω ακόμα πώς να διαβάζω την θέση τους

DT200
06-09-06, 00:11
φίλε dal_kos είναι πολύ δύσκολο να καταλάβω ένα τόσο μεγάλο πρόγραμμα που δεν έχω γράψει ο ίδιος . άσε θα φτιάξουμε κάποιο άλλο (χειρότερο :hammer: )

dal_kos
06-09-06, 00:12
Τα ποτενσιομετρα θα αλλαζουν μεσω του μικροελεγκτη. Αρα αν τα κανουμε να φτασουν στην μεγιστη η την ελαχιστη αντισταση πριν τα συνδεσουμε [και μεινουν σ αυτη τη θεση αφου ειναι non-volative] μετα ο μικροελεγκτης θα "γνωριζει" ποια ειναι η θεση τους αφου εκεινος θα τους εχει δωσει εντολη για να αλλαξουν το value τους.Καταλαβατε τι εννοω?
Δηλαδη θα δωσουμε στον μικροελεγκτη αρχικα οτι τα ποτενσιομετρα ειναι στην ελαχιστη αντισταση πχ. και μετα θα του "πουμε" οτι ολο το ευρος των ποτ/των ειναι 256 για του equalizer και ** για την ενταση ;)

dal_kos
06-09-06, 00:13
άσε θα φτιάξουμε κάποιο άλλο (χειρότερο :hammer: )

Λολ. Δεν βαριεσαι... η δουλεια να γινεται :mrgreen:

dal_kos
07-09-06, 14:06
Λοιπον σημερα μου ηρθαν τα ψηφιακα ποτενσιομετρα. Εχω δυο...
Το max5455 και το max 5475 Το πρωτο ειναι volatile ενω το δευτερο ειναι non-volatile.
και τα δυο ειναι στα 100ΚΩμ[δηλαδη οσα χρειαζονται για το equalizer] οποτε μπορουμε να επιλεξουμε ποιο απο τα δυο θα χρησιμοποιηθει ;)

Το 5455 οταν απενεργοποιειται επιστρεφει στη μεση οποτε ειτε θα πρεπει να τροφοδοτειται συνεχως μαζι με το μΕ ειτε θα πρεπει το προγραμμα να "ξερει" οτι οταν απενεργοποιειται επιστρεφει στη μεση.[Μαλλον ειναι πιο καλο να τροφοδοτειται συνεχως καθως συνεχως θα τροφοδοτειται κι ο μικροελεγκτης για να δουλευει ο τηλεχειρισμος.]

Ακομα μου ηρθε και το 5457 το οποιο θα ειναι για τον ελεγχο της εντασης του ηχου και του balance.

DT200
08-09-06, 08:40
Ωραία ! πότε θα έχει έτοιμο τον ενισχυτή ?
Μόλις τον τελειώσεις βάλε και τα ψηφιακά ποτενσιόμετρα και επαλήθευσε ότι όλα λειτουργούν κανονικά . μετά θα βάλουμε ‘μπροστά’ για τον μ/ε

dal_kos
08-09-06, 13:30
ΟΚ.
Πανω που ηταν ετοιμα τα σχεδια για ολα τα εξαρτηματα του ενισχυτη [εκτος απο την βαθμιδα ενισχυσης γιατι δεν εχω ακομα τα chip] μου λενε πως δεν γινεται γιατι ειναι σε Pad2Pad και ειναι μονο για τη μεθοδο του etching :(

Και τωρα πρεπει να τα ξανασχεδιασω στο eagle. Οποτε θα χρειαστει αρκετη υπομονη...

chip
09-09-06, 11:45
Και κάντο με etching. Ποιο το πρόβλημα?
Τι απόσταση ακροδεκτών εχουν τα ΜΑΧ?

dal_kos
09-09-06, 12:57
Για τα ποτενσιομετρα θα φτιαξω μικρες βασεις που θα μπαινουν απανω και απ την αλλη θα βγαζουν εξοδους σε μεγεθος για dip. Αλλα χρειαστηκε να ξανασχεδιασω το κυκλωμα του x-over, για παραδειγμα, γιατι ειχε ελαχιστη αποσταση 0.2μμ ετσι οπως το ειχα φτιαξει και με το etching μπορει να ειχα προβλημα. ;)
Με την πλακετα τελειωσα και την Δευτερα θα τις στειλω για κατασκευη.

chip
09-09-06, 13:50
Το x-over τι κύκλωματα έχει? Τα 0,2mm (καλύτερα να αναφέρεσε σε Mils) είναι 8mils και αν και είναι εφικτά (ακόμα και σε ερασυτεχνικό εργαστήριο) καλύτερα να τα αποφεύγεις γιατί είναι στα όρια. η μετατροπή θα σε βολέψει γιατί θα μπορείς να επαναχρησιμοποιήσεις εύκολα τα chip αν η κεντρική πλακέτα χρειαστεί αλλαγές, αλλά κάνε μικρές συνδέσεις για να μην έχεις προβλήματα με θόρυβο.

dal_kos
09-09-06, 14:41
Εχω την δωρεαν εκδοση και εχει περιορισμο μεγεθους και δεν μπορω να κανω σωστη κατανομη :( Μαλλον θα ξαναδοκιμασω.