Αποστολέας Θέμα: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches  (Αναγνώστηκε 3325 φορές)

0 μέλη και 1 επισκέπτης διαβάζουν αυτό το θέμα.

Αποσυνδεδεμένος Αυτάρεσκο Καθίκι Isnogood

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 2648
  • Φύλο: Άντρας
  • So much to think, and so little beer....
    • Προφίλ
Καλησπέρα σε όλους.

Αφορμή για το παρόν post αποτέλεσε αυτό το
βίντεο
. Αυτό που θέλω είναι να φτιάξω μόνος μου ένα footswitch το οποίο να συνδέεται σε κάποια πετάλια ΕΗΧ που έχω (Cathedral/ Memory Man with Hazarai) και να τα ελέγχω κάπως πιο "απομακρυσμένα".

Ο Rotary encoder δουλεύει με τον εξής τρόπο, από όσο έχω καταλάβει: Έχει τρεις ακροδέκτες 1,2 και 3. Κατά την CW στροφή κάνουν πρώτα επαφή τα (2,3) και με μια μικρή καθυστέρηση τα (1,2). Κατά την CCW στροφή κάνουν επαφή πρώτα τα (1,2) και μετά τα (2,3). Διαβάζοντας ποιο από τα 2 κάνει πρώτα επαφή, το πετάλι αλλάζει μνήμες αντιστοίχως (Πάνω ή κάτω). Τέλος, όταν τον πιέζεις, κάνουν ταυτόχρονα επαφή τα (1,2,3). Υπάρχει κάποιος τρόπος να το καταφέρω αυτό με κάποιο χειροποίητο κύκλωμα?
Με τόσα "μπράβο" και τόσα χαϊδέματα στα αυτιά, τη Δευτέρα, δε περιμένω κάτι λιγότερο απο Ρωμαϊκό όργιο...

Αποσυνδεδεμένος vegos

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 755
  • Φύλο: Άντρας
  • Άμα μεγαλώσω, θα γίνω κιθαρίστας...
    • Facebook profile
    • Προφίλ
    • MoschatoWeather
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #1 στις: 23/04/17, 19:45 »
Arduino is your friend :)
Αν έχεις ασχοληθεί (ή θες να ασχοληθείς) διαβάζεις τα παρακάτω:

Εγώ "παίζω" με αυτό το library: https://github.com/0xPIT/encoder το οποίο υποστηρίζει και acceleration.

Δεν θες κάτι τρομερό από πλευρά υλοποίησης.
"Διαβάζεις" τον encoder, και ανοιγοκλείνεις μερικά relay.

Στην ουσία θες από εξοπλισμό 1 arduino.
Για κάθε relay ένα απλό κυκλωματάκι με NPN transistor (2N2222), δίοδο (1N4148 αν και ότι και να βάλεις θα δουλέψει) και μια αντίσταση (4.7kΩ είναι μια χαρά).
Έναν 360 (endless) rotary encoder.

Στο Arduino θα έχεις περίπου 17 I/O, βγάλε 3 για τον rotary encoder σου μένουν 14. Οπότε οδηγείς 14 ρελέ.
Ή μπορείς να το πας λίγο πιο πέρα και να βάλεις Solid State Relays και να τα οδηγήσεις απευθείας ή ακόμα καλύτερα να βάλεις κάποιο IC του τύπου MAX491X (έχει μονά, διπλά, τετραπλά αν θυμάμαι καλά, αν και υπάρχουν και περισσότερα), που κι αυτό το οδηγείς απευθείας (και είναι και "clickless").

Aν θες sample κώδικα:
https://github.com/vegos/darkroomtimer

Δεν είναι ακριβώς αυτό που ζητάς, αλλά υπάρχει μέσα ο έλεγχος και του encoder και του relay.

Συνδεδεμένος saved

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 2580
  • play bass like a badass
    • Προφίλ
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #2 στις: 23/04/17, 19:53 »
Ουφ.Πονοκεφαλος.
Εχω πιο απλη ληση.
Πουλα τα ολα και παρε μπασο.Δεν θα θες εφε,γλειτωνεις απο μπελαδες.
Σο σιμπλε
The μπασό is the law

Αποσυνδεδεμένος Αυτάρεσκο Καθίκι Isnogood

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 2648
  • Φύλο: Άντρας
  • So much to think, and so little beer....
    • Προφίλ
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #3 στις: 24/04/17, 13:41 »
Ουφ.Πονοκεφαλος. Εχω πιο απλη ληση. Πουλα τα ολα και παρε μπασο.Δεν θα θες εφε,γλειτωνεις απο μπελαδες. Σο σιμπλε
Μπάσο "έπαιζα" παλιά. Τώρα γέρασα. :P . Και μπάσο να έπαιζα, πάλι εφέ θα έβαζα.

Arduino is your friend :)
Αν έχεις ασχοληθεί (ή θες να ασχοληθείς) διαβάζεις τα παρακάτω:
Στην ουσία θες από εξοπλισμό 1 arduino.
Για κάθε relay ένα απλό κυκλωματάκι με NPN transistor (2N2222), δίοδο (1N4148 αν και ότι και να βάλεις θα δουλέψει) και μια αντίσταση (4.7kΩ είναι μια χαρά).
Έναν 360 (endless) rotary encoder.
Μια στιγμή. Εγώ θέλω να έχω footswitch να κάνουν τη δουλειά του rotary encoder. Δεν κατάλαβα γιατί χρειάζομαι διόδους και rotary encoder. Για το input του Arduino?

Στο Arduino θα έχεις περίπου 17 I/O, βγάλε 3 για τον rotary encoder σου μένουν 14. Οπότε οδηγείς 14 ρελέ.
Εντάξει, για αυτό το απλό, θα προτιμήσω μικρότερες εκδοχές του. Αλλά και πάλι, ήθελα να "αποφύγω" το arduino, ή τελοσπάντων να έχω έναν πιο παραδοσιακό τρόπο.


Ή μπορείς να το πας λίγο πιο πέρα και να βάλεις Solid State Relays και να τα οδηγήσεις απευθείας [...]
Υποθέτω περιλαμβάνεις ακόμα το Arduino. Αν όχι, χρειάζομαι κάπως να προσθέσω τη καθυστέρηση του ενός ρελέ.
Με τόσα "μπράβο" και τόσα χαϊδέματα στα αυτιά, τη Δευτέρα, δε περιμένω κάτι λιγότερο απο Ρωμαϊκό όργιο...

Αποσυνδεδεμένος vegos

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 755
  • Φύλο: Άντρας
  • Άμα μεγαλώσω, θα γίνω κιθαρίστας...
    • Facebook profile
    • Προφίλ
    • MoschatoWeather
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #4 στις: 24/04/17, 14:23 »
Μια στιγμή. Εγώ θέλω να έχω footswitch να κάνουν τη δουλειά του rotary encoder. Δεν κατάλαβα γιατί χρειάζομαι διόδους και rotary encoder. Για το input του Arduino?

OK, λάθος, νόμιζα ότι ήθελες να χρησιμοποιήσεις rotary encoder. Πάμε από την αρχή.

Στην υλοποίηση με relay, θες κι έναν driver (1 αντίσταση, 1 δίοδο, ένα τρανζίστορ).

Αν βάλεις footswitches, δύο πχ, απλά θες ένα κώδικα του στυλ:

if (button1_pressed)
{
  pos-=1;
  if (pos<1)
    pos=5; // Το μέγιστο των ρελέ
}
if (button2_pressed)
{
  pos+=1;
  if (pos>5)
    pos=1; // Το ελάχιστο των ρελέ
}

Οπότε πολύ χοντρικά, κάπως έτσι θα λουπάρεις μεταξύ των θέσεων.

Βέβαια θα χρειαστεί να κάνεις κι ένα debounce στα footswitches, αλλά αυτά είναι λεπτομέρειες για πιο μετά.
Χρησιμοποιώντας έναν μπαμπούινο, θα μπορέσεις να βάλεις και ένα πχ 7 segment led display και να βλέπεις και σε ποιο mode είσαι και πάει λέγοντας.

---

Edit:

Εναλλακτικά θα πρέπει να φτιάξεις ένα λογικό κύκλωμα, που να κάνει την ίδια δουλειά.
Νομίζω ότι θα υπάρχουν αρκετά ψάχνοντας με "relay logic flipflop toggle" ή κάτι τέτοιο...

Παρόλα αυτά, εγώ θα ακολουθούσα την λογική του Arduino καθώς μπορείς να το επεκτείνεις όσο θες (πχ midi control, display κλπ).
« Τελευταία τροποποίηση: 24/04/17, 15:58 από vegos »

Αποσυνδεδεμένος Αυτάρεσκο Καθίκι Isnogood

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 2648
  • Φύλο: Άντρας
  • So much to think, and so little beer....
    • Προφίλ
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #5 στις: 24/04/17, 21:05 »
Από ότι έχω βρει, υπάρχουν time-delay relays, οπότε, θα κάνω μια μικρή έρευνα σε αυτά.
Με τόσα "μπράβο" και τόσα χαϊδέματα στα αυτιά, τη Δευτέρα, δε περιμένω κάτι λιγότερο απο Ρωμαϊκό όργιο...

Αποσυνδεδεμένος Βραζίλης

  • Δεν με λένε Bill!
  • Administrator
  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 10127
  • Φύλο: Άντρας
  • Βασίλης + Βραζιλία = Βραζίλης
    • Skype - fronimitis
    • Facebook profile
    • Προφίλ
    • Κιθάρα
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #6 στις: 28/04/17, 09:27 »
Στην υλοποίηση με relay, θες κι έναν driver (1 αντίσταση, 1 δίοδο, ένα τρανζίστορ).

Βέβαια θα χρειαστεί να κάνεις κι ένα debounce στα footswitches, αλλά αυτά είναι λεπτομέρειες για πιο μετά.

Γιατί να χρειάζεται driver; Το Arduino οδηγεί άνετα τα relay (από όσο έχω δοκιμάσει και παρακολουθήσει)

Debounce κάνει το Arduino. Δεν είχα ποτέ πρόβλημα με τα κουμπιά και τις βιβλιοθήκες που χρησιμοποίησα.

(Από ότι καταλαβαίνω, έχεις ασχοληθεί περισσότερο από εμένα, οπότε διόρθωσέ με αν κάνω λάθος)

Αποσυνδεδεμένος vegos

  • Εδώ είναι το σπίτι μου
  • *****
  • Μηνύματα: 755
  • Φύλο: Άντρας
  • Άμα μεγαλώσω, θα γίνω κιθαρίστας...
    • Facebook profile
    • Προφίλ
    • MoschatoWeather
Απ: "Προσομοίωση" Rotary Encoder Switch με momentary footswitches
« Απάντηση #7 στις: 28/04/17, 13:00 »
Γιατί να χρειάζεται driver; Το Arduino οδηγεί άνετα τα relay (από όσο έχω δοκιμάσει και παρακολουθήσει)

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

Στην ουσία, βάζεις ένα τρανζίστορ που κάνει τον διακόπτη, είτε NPN (κόβεις τη γή) είτε PNP (κόβεις το +).

Παράθεση
Debounce κάνει το Arduino. Δεν είχα ποτέ πρόβλημα με τα κουμπιά και τις βιβλιοθήκες που χρησιμοποίησα.

Software θα το κάνεις, εννοείται. Απλά την ώρα που πατάς ένα κουμπί, υπάρχει ένα σημείο όπου οριακά βραχυκυκλώνει, αυτό θα το διαβάσει ο arduinos και θα κάνει αυτό που θες. Πιθανότατα να χάσει για ms το connectivity ο διακόπτης και να το ξαναβρεί μετά, οπότε θα πάρει 2 φορές την εντολή, ή θα την παίρνει για όσο έχεις πατημένο το κουμπί κλπ.
Γενικά, καλό είναι στα κουμπιά να βάζεις είτε ένα απλό delay κάποιων ms (50-100) είτε ένα while pressed ώστε να παίρνει το command μόλις αφήσεις τον διακόπτη (πχ while (digitalRead(D5)==LOW) delay 1;).

 

Σχετικά θέματα

  Τίτλος / Ξεκίνησε από Απαντήσεις Τελευταίο μήνυμα
17 Απαντήσεις
5440 Εμφανίσεις
Τελευταίο μήνυμα 18/09/11, 12:56
από Alex_Under
12 Απαντήσεις
6932 Εμφανίσεις
Τελευταίο μήνυμα 17/05/05, 06:48
από Petrucci
15 Απαντήσεις
4775 Εμφανίσεις
Τελευταίο μήνυμα 01/11/06, 00:59
από zoltan
7 Απαντήσεις
1900 Εμφανίσεις
Τελευταίο μήνυμα 30/11/08, 23:39
από Νεφελοβάτης
12 Απαντήσεις
2687 Εμφανίσεις
Τελευταίο μήνυμα 20/07/09, 02:02
από Aganippi
2 Απαντήσεις
2141 Εμφανίσεις
Τελευταίο μήνυμα 16/02/10, 14:41
από themos
2 Απαντήσεις
1472 Εμφανίσεις
Τελευταίο μήνυμα 24/06/11, 22:47
από theodoropoulos
0 Απαντήσεις
993 Εμφανίσεις
Τελευταίο μήνυμα 07/01/13, 18:09
από Spyros Delta
3 Απαντήσεις
2019 Εμφανίσεις
Τελευταίο μήνυμα 18/07/13, 19:28
από metalupyourass
0 Απαντήσεις
4973 Εμφανίσεις
Τελευταίο μήνυμα 30/11/16, 16:34
από Ioannis Anastassakis