Υλοποίηση preamplifier PGA23xx

lemon

Supreme Member
3 March 2009
4,041
Για το σχεδιασμό του τμήματος του pga...ναι έχω αρχίσει και ασχολούμαι, θα τα πούμε εν καιρώ και φυσικά θα ζητήσω αρκετές πληροφορίες, γιατί δεν έχω τη συνολική εικόνα του πρότζεκτ, εντελώς ξεκάθαρη.

Για τα τροφοδοτικά Salas, δεν συμφέρει να γίνουν ομαδικά, εκτός και εάν όλοι οι ενδιαφερόμενοι είναι μέσα στην ίδια πόλη και πάνε χέρι χέρι.
Στο diyaudio την όλη διαδικασία του GB την κάνει ο Tea-Bag.
Βάζει ένα αρχείο excel, όπου ο καθένας προσθέτει το τι θέλει (πλακέτες, σακουλάκια με τα βασικά ηλεκτρονικά της πλακέτας...τα λέει μίνι κιτ). Τον πληρώνεις μέσω Paypal, τον ενημερώνεις στο αντίστοιχο νήμα ότι τον πλήρωσες και εκείνος στα στέλνει όταν έρθει η ώρα από ΗΠΑ. Τα έξοδα αποστολής είναι πραγματικά λίγα, εξαιτίας δολλαρίου (έρχονται με USPS).
Πιο πολλά θα κοστίσουν εάν τα έξοδα μοιραστούν και αρχίσουν οι αποστολές μέσω ΕΛΤΑ.
Θα χρειαστείτε οπωσδήποτε πλακέτα θετική+αρνητική, έτσι όπως τις πουλάνε είναι 3 ενιαίες που διαχωρίζονται με το χέρι και είναι 2 θετικής και 1 αρνητική.
Νομίζω ότι αυτό το GB κλείνει γύρω στις 24/2
 

lemon

Supreme Member
3 March 2009
4,041
Εάν κάποιος έχει διαθέσιμη βιβλιοθήκη για το Eagle που να περιλαμβάνει τη σειρά pga 43xx, παρακαλώ να με ενημερώσει...
 

lemon

Supreme Member
3 March 2009
4,041
'Οχι τα 23xx τα έχω και με αυτά δουλεύω τώρα, εάν βρω όμως για τη σειρά 43xx απλοποιείται πολύ η σύνδεση γιατί τα δύο pga, ενσωματώνονται στο ένα χωρίς να χάνετε ίχνος από τα τεχνικά χαρακτηριστικά.
Βρήκα και ένα evaluation schema για 4311 και έλεγα μήπως δουλέψω πάνω και σε αυτό...
 

VFXCode

Senior Member
6 June 2007
374
Δεν σε πιάνω ... τι ακριβώς έχεις το μυαλό σου με τα 43xx? μήπως προσπαθείς να κάνεις τις πλακέτες με διπλά PGA και ένα PGA43xx?
 

Peter52

Established Member
25 November 2010
202
DSC00312.jpgDSC00314.jpgDSC00315.jpgΣε πρώτη προσπάθεια ανεβάζω τρεις φωτογραφίες της οθόνης που δείχνει την αλλαγή επιλογής εισοδου.
 
Last edited:

Peter52

Established Member
25 November 2010
202
Ακολουθεί φωτογραφία με την μονάδα του arduino.
DSC00307.jpgDSC00318.jpg
 

Attachments

  • DSC00305.jpg
    DSC00305.jpg
    75.4 KB · Views: 121
  • DSC00306.jpg
    DSC00306.jpg
    83.9 KB · Views: 119
  • DSC00317.jpg
    DSC00317.jpg
    69.3 KB · Views: 118
Last edited:

Peter52

Established Member
25 November 2010
202
Στο πρόηγούμενο post μπήκαν και οι φωτογραφίες από δύο ιδέες για τις κάρτες των ρελέ.
Στην δεύτερη προβλέπονται ακόμη δύο θυγατρικές με ρελέ. Μαλιστα με την ιδέα αυτή οποιοδήποτε ρελέ μπορεί να χρησιμοποιηθεί είτε σαν είσοδος είτε σαν έξοδος. Η οδήγηση των ρελέ γίνεται με τρανζίστορ BD681. Το όλο σύστημα είναι 12 volt.
Ακόμη οι μονάδες αυτές δεν έχουν δοκιμαστεί με ήχο. Έχει γίνει έλεγχος αν οπλίζουν τα ρελέ.
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Όμορφα εξελίσσονται τα πράγματα :)

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

Τα πλήκτρα άμεσης πρόσβασης στις εισόδους / loops που θέλει ο Ντίνος μπορούμε να τα κάνουμε με μόλις 1 i/o pin, αρκεί να είναι analog. Αυτό που μπορούμε να κάνουμε είναι να αντιστοιχήσουμε μια διαφορετική αντίσταση σε κάθε πλήκτρο ώστε όταν πατιέται αυτό να πηγαίνει μια συγκεκριμένη (γνωστή) τάση στο pin. Αυτή η τάση θα αντιστοιχίζεται με συγκεκριμένη λειτουργία, π.χ. Select Input 1. Έτσι είμαστε πολύ άνετοι με I/O, όσο αφορά την επιλογή εισόδων.

Κατά τα άλλα, δεν έχω προλάβει να δω προσεκτικά τα σχηματικά του VFXCode, υπόσχομαι να το κάνω μέσα στο Σ/Κ ώστε να κάνω χρήσιμα σχόλια.

Τα δικά μου arduino οδηγούν άνετα ρελέδες μέσω μικρών τρανζίστορ (π.χ. BC548 ή ότι άλλο βρω μπροστά μου).


Ένα άλλο θέμα που σκεφτόμουν είναι το εξής:

Στον προενισχυτή που έχω αυτή τη στιγμή, είχα φροντίσει να ενσωματώσω και έναν ρελέ home cinema bypass. Έχω δηλαδή και μια είσοδο home cinema, η οποία συνδέεται μέσω του εν λόγω ρελέ με τα RCA εξόδου όταν ο προενισχυτής είναι κλειστός. Όταν ανάβει ο προενισχυτής, ο συγκεκριμένος ρελές περιμένει κάποια δευτερόλεπτα και μετά συνδέει την έξοδο της πλακέτας μου στα RCA εξόδου, αποσυνδέοντας τα RCA που έρχονται από τον πολυκάναλό μου. Κάνω δηλαδή ουσιαστικά bypass τον προενισχυτή όταν δεν τον έχω αναμμένο ώστε να παίζει ο πολυκάναλός μου απευθείας με τον τελικό μου.

Πως το βλέπετε; Υπάρχει ενδιαφέρον για μια τέτοια λειτουργία;

Όποιος έχει και πολυκάναλο (προ)ενισχυτή λογικά θα τη λατρέψει..
 

Peter52

Established Member
25 November 2010
202
Ο προγραμματισμός των arduino που φαίνεται στις φωτογραφίες είναι ενδεικτικός. Αυτό που κάνει σωστα το arduino είναι ότι ειλέγει σωστα τα ρελέ και κάνει την απιτούμενη σίγαση. Αρχικά είχα σκεφτεί να βάλω encoder και στην σίγαση των εξόδων, αλλά μου φαίνεται πιο λογικό να χρησιμοποιηθούν διακόπτες πιθανόν με ενσωματωμένο led. Θα μπορούσαμε αντί για encoder να χρησιμοποιήσουμε διακόπτες πλοήγησης (βελάκια δεξιά-αριστερά-πάνω-κατω και ΟΚ) αλλά δεν βρήκα τέτοια διαθέσιμα στην Αθήνα.

Προτίμησα το Leonardo γιατί έχει 4 interrupts για άμεση αναταπόκριση.Τα άλλα arduino έχουν 2 interrupts.

Προτείνω κατ' αρχήν να ορίσουμε μερικούς συνδυασμους με encoder ή μπουτόν ώστε να προσαρμόσω κατάλληλα τον κώδικα.

Επίσης να ορίσουμε τι θέλουμε να δείχνει η οθόνη για τους ίδιους λόγους.

Η έτοιμη μονάδα του arduino έχει το καλό ότι έχει USB σύνδεση που μπορεί να μεταφερθεί έξω απο το κουτί ώστε με ένα καλώδιο USB να συνδέεται με υπολογιστή για αλλαγές στο firmware χωρίς να χρειάζεται να βγαίνει το chip για επαναπρογραμματισμό.
 

lemon

Supreme Member
3 March 2009
4,041
Μάλλον θα αρχίσουν να πέφτουν πληροφορίες και θα αρχισουμε να χανόμαστε...πάντως προχωρά το πράγμα.

Προσωπικά, έχω μείνει πίσω, γιατί είχα εξ' αρχής το μυαλό μου στα τροφοδοτικά...δούλεψα με αυτά...τη συνέχεια τη ξέρετε...και τώρα 2-3 μέρες καταπιάνομαι με την πλακέτα του Pga, αλλά μου λείπουν πληροφορίες για το πως πάμε να το υλοποιήσουμε.

Ας ξεκινήσω: εάν συνδιάσουμε δύο pga 23xx μπορούμε να έχουμε έξοδο xlr, το οποίο νομίζω εξ' αρχής ζητήθηκε. Έχω κάνει ένα πρόχειρο σχηματικό στο eagle με το πως οι έξοδοι θα πάνε στα xlr και λογικά το πως θα συνδεθούν τα δύο pga μεταξύ τους (προτείνεται η έξοδος SDO->SDI δηλ. από το pin7->pin3). To τμήμα εισόδου στα αριστερά των pga το ξεχνάτε...

Όπου GNDA-> γείωση αναλογικής τροφοδοσίας και γείωση σήματος, όπου GND->γείωση ψηφιακής τροφοδοσίας.

Εάν προσπαθήσουμε να απλοποιήσουμε την κατάσταση, δύο pga23xx ισοδυναμούν με ένα soc-28 pga4311 (δυστυχώς βγαίνει μόνο σε soc και μόνο σε έκδοση xx11), τότε γλιτώνουμε χώρο και τη σύνδεση SDO->SDI η οποία είναι εσωτερική.

Συμφωνήσαμε επίσης να βάλουμε μπάφερ (με τελεστικό) στην είσοδο για προσαρμογή της εμπέδησης. Βρήκα όμως ένα evaluation schema του 4311 το οποίο οδηγείται από ένα SN74HC541n το οποίο αναφέρεται ως octal buffers and line drivers with 3 state outputs. O VFSCode είχε αναφέρει ότι χρειαζόμαστε ένα 74HC595. Δεν γνωρίζω εάν αυτά αλληλοκαλύπτονται και εάν τελικά πιστεύετε να κάνω μια προσπάθεια να το ενσωματώσω στην οδήγηση των ή του pga.
 

Attachments

  • pga.jpg
    pga.jpg
    59.8 KB · Views: 146

VFXCode

Senior Member
6 June 2007
374
Νομίζω φτιάχνοντας μία πλακέτα με ένα PGA θα είναι πιο φτηνό (κοινές πλακέτες για όλους και για όλα), φτάνει να μπορεί να γίνει cascade με τις ίδιες πλακέτες.

Τα 74HC595 αναφέρονταν για την οδήγηση των relay.
 
Ο προγραμματισμός των arduino που φαίνεται στις φωτογραφίες είναι ενδεικτικός. Αυτό που κάνει σωστα το arduino είναι ότι ειλέγει σωστα τα ρελέ και κάνει την απιτούμενη σίγαση. Αρχικά είχα σκεφτεί να βάλω encoder και στην σίγαση των εξόδων, αλλά μου φαίνεται πιο λογικό να χρησιμοποιηθούν διακόπτες πιθανόν με ενσωματωμένο led. Θα μπορούσαμε αντί για encoder να χρησιμοποιήσουμε διακόπτες πλοήγησης (βελάκια δεξιά-αριστερά-πάνω-κατω και ΟΚ) αλλά δεν βρήκα τέτοια διαθέσιμα στην Αθήνα.

Προτίμησα το Leonardo γιατί έχει 4 interrupts για άμεση αναταπόκριση.Τα άλλα arduino έχουν 2 interrupts.

Προτείνω κατ' αρχήν να ορίσουμε μερικούς συνδυασμους με encoder ή μπουτόν ώστε να προσαρμόσω κατάλληλα τον κώδικα.

Επίσης να ορίσουμε τι θέλουμε να δείχνει η οθόνη για τους ίδιους λόγους.

Η έτοιμη μονάδα του arduino έχει το καλό ότι έχει USB σύνδεση που μπορεί να μεταφερθεί έξω απο το κουτί ώστε με ένα καλώδιο USB να συνδέεται με υπολογιστή για αλλαγές στο firmware χωρίς να χρειάζεται να βγαίνει το chip για επαναπρογραμματισμό.

Ο κώδικας που χρησιμοποιώ εγώ για το rotary encoder είναι αυτός που έχει γράψει ο φίλος μας του hifiduino, και απαιτεί μόνο ένα interrupt / encoder. Οπότε αν είναι μόνο αυτό το θέμα μας μπορούμε να αποφύγουμε το leonardo, πηγαίνοντας σε πιο οικονομική (και customizable) λύση, π.χ. με ATmega328.

Για τον προγραμματισμό του Atmel μπορούμε είτε να το βάλουμε πάνω σε ένα Uno είτε να συνδέσουμε κάποιο USB-to-UART καλώδιο πάνω σε header που θα έχουμε φροντίσει να υπάρχει (είχα πάρει ένα τέτοιο αντάπτορα από το ebay κάποια στιγμή..). Με δεδομένο ότι η ιδέα είναι να τελειώσει κάποια στιγμή το development και μετά να κλείσει για καλά το κουτί, οι περισσότεροι δεν θα έχουμε ανάγκη να το επαναπρογραμματίζουμε πολύ συχνά.. οπότε μάλλον η ανάγκη για usb είναι κάπως περιορισμένη.
 

Peter52

Established Member
25 November 2010
202
Πράγματι γίνεται και με ένα interrupt / encoder μαζί με μια ακόμη ψηφιακή Ι/Ο αλλά με τα δύο interrupts έχει μεγαλύτερη ακρίβεια και ευαισθησία και λειτουργεί σωστά μπρος-πίσω. Επίσης αρχικά είχα δοκιμάσει με 2 μπουτόν (Μπρος - πίσω) αλλά περνάει από όλες τις εισόδους μέχρι να φτάσει στην επιθυμητή. Όσον αφορά το κόστος ένα 328 με optiboot Uno έχει γύρω στα 5 ενώ το micro που είναι και πλήρες και αυτόνομο τελείως κάνει 22.5 . Αποφεύγονται έτσι κάποια άλλα (κρύσταλος, σταθεροποιητές) αλλά επί πλέον μπορούμε να στέλνουμε στους φίλους εδώ στο φορουμ που δεν έχουν τέτοιο εξοπλισμό, τον κώδικα και με ένα καλώδιο USB να τον περνανε στο arduino τους. Επίσης δεν ταλαιπωρείται και το τσιπ με τα βάλε-βγάλε. Ακόμη καταλαμβάνει πάρα πολύ μικρό χώρο, ίσως λιγότερο από την diy κατασκευή.
 
Last edited:

VFXCode

Senior Member
6 June 2007
374
Παίδες μην τρελαίνεστε με τα interrupts δεν χρειάζονται για τον encoder (και κατά την γνώμη μου είναι λάθος αλλά αυτό είναι άλλου παπά ευαγγέλιο).

Έχω γράψει αυτό για μένα
Ισχύει για 2bit encoder.

Code:
int ENCA=7;
int ENCB=6;


void setup() {
  pinMode(ENCA, INPUT);
  pinMode(ENCB, INPUT);
  digitalWrite(ENCA, HIGH);
  digitalWrite(ENCB, HIGH);
  Serial.begin(9600);
}

void loop() {
  int dir=RotEncoder();
  if (dir==1) {
    Serial.println("Down");
  }
  if (dir==2) {
    Serial.println("Up");
  } 
  delay(2); // Xreiazetai gia debounce. Mporei na vgei an ginei hardware debounce me piknotakia.
}

int state0[]={0,0,0,0};
int RotEncoder() {
  int encc = (digitalRead(ENCA) << 1) + digitalRead(ENCB);
  int out=4;

  int state1[]={1,0,2,3};
  int state2[]={0,2,3,1};
  int state3[]={2,3,1,0};
  int state4[]={3,1,0,2};
  int state5[]={0,1,3,2};
  int state6[]={1,3,2,0};
  int state7[]={3,2,0,1};
  int state8[]={2,0,1,3};

  if (state0[3] != encc) {
    for (int i=0;i<4;i++) {
      if (i<3) state0[i]=state0[i+1];
      else state0[i]=encc;
    }
    
    if ((state1[0] == state0[0] && state1[1] == state0[1] && state1[2] == state0[2] && state1[3] == state0[3])||
        (state2[0] == state0[0] && state2[1] == state0[1] && state2[2] == state0[2] && state2[3] == state0[3])||
        (state3[0] == state0[0] && state3[1] == state0[1] && state3[2] == state0[2] && state3[3] == state0[3])||
        (state4[0] == state0[0] && state4[1] == state0[1] && state4[2] == state0[2] && state4[3] == state0[3])) 
    out = 1;
    else if ((state5[0] == state0[0] && state5[1] == state0[1] && state5[2] == state0[2] && state5[3] == state0[3])||
             (state6[0] == state0[0] && state6[1] == state0[1] && state6[2] == state0[2] && state6[3] == state0[3])||
             (state7[0] == state0[0] && state7[1] == state0[1] && state7[2] == state0[2] && state7[3] == state0[3])||
             (state8[0] == state0[0] && state8[1] == state0[1] && state8[2] == state0[2] && state8[3] == state0[3])) 
    out = 2;
    else
    out = 3;
  }
  return out;
}
 
Θυμάμαι παλιότερα που ψαχνόμουν με τα rot encoders ότι δεν είχα βρει κώδικα που να είναι αξιόπιστος και να μην απαιτεί interrupt. Τώρα με ιντριγκάρεις.. θα τον δοκιμάσω το βράδυ και θα πω εντυπώσεις. :smile:

Όσο αφορά το "Leonardo vs. σκέτο 328" κάνουμε ότι θέλετε.. no problem από μένα. Απλά είμαι fan των πιο custom λύσεων όπου επιτρέπουν οι συνθήκες.
 

Peter52

Established Member
25 November 2010
202
Όντως γίνεται και χωρίς interrupt. Απλά είναι θέμα, απ' ότι γραφεται, ακρίβειας και ευαισθησίας.

Επίσης ως modular κατασκευή μπορεί να χωριστεί σε μια μονάδα για το arduino, όποιο θέλει ο καθένας, και σε μια μονάδα με τα expander (595). Αυτό μπορεί να αποδειχθεί καλό και στην διευθέτηση του χώρου στο κουτί.
 

lemon

Supreme Member
3 March 2009
4,041
Μα 'ρέσετε βρε εσείς, παίζετε στο δικό σας ταμπλό και κάνετε την διαιτησία ότι θέλετε!
Υλοποιήστε το όπως είναι καλύτερο, εσείς ξέρετε καλύτερα. Για τον κώδικα, εάν η διαφορά στο κόστος είναι για 30 ευρώ είναι καλύτερα να γίνεται μέσω υποογιστή για να μην παιδεύεται ο μη έμπειρος με βγάλε-προγραμμάτισε-βάλε, νομίζω καλύτερα από usb.

Από μένα που έχω μείνει στο pga, πως θελετε να το ή τι θέλετε να κάνω, να σχεδιάσω μόνο μια πλακέτα με το pga επάνω του, τους τυχόν πυκνωτές αποσύζευξης και τις γραμμές τροφοδοσίας, τί είδους pin για input-output, με επάλληλη συστοιχία για κάποιον που θέλει να έχει πολυκάναλο.
Προσωπικά νομίζω ότι η περίπτωση του ενός pga4311 είναι η βέλτιστη λύση. Με ένα pga έχουμε xlr έξοδο ή για όσους δεν ενδιαφέρονται για το xlr δύο δικάναλους.