Sari la conținut

Arduino UNO R3 Deep-Blue & 6P3C-E SE & driver 6N1P PP


RockDok

Postări Recomandate

Tensiunea pe G1 ( in cazul finalului) ar fi de -12.5V* presetata din R5 modul DACN12 ( Vout 0V din MCP)

se regleaza astfel incit sa apara 0.4V pe R9.

Sa vedem pentru cazul in care avem B00000000 in EPROM. Asta ar insemna FIRST_RUN.

Se verifica tensiunea pe R9, daca aceasta tensiune corespunde unui curent sub domeniul [78-82mA] se incrementeaza intrarea DAC-ului.

La prima valoare ce intra in domeniu se memoreaza. Daca domeniul nu este atins afiseaza eroare si intra in SHUTDOWN.

In functionare cu o valoare memorata  > 0 si daca valoarea presetarii corespunde unui curent peste domeniu, se decrementeaza.

Daca ajunge la 0 si nu a fost gasit un curent in domeniu se afiseaza eroare si intra in SHUTDOWN.

Sint desigur mai multe conditii, se vor lamuri pe parcurs.

Nu am prea multe de calculat, doar de verificat niste limite.

Link spre comentariu
Distribuie pe alte site-uri

  • Răspunsuri 36
  • Created
  • Ultimul Răspuns

Top Posters In This Topic

Acest mod de lucru simplu si intuitiv pentru inceput este foarte clar, desi eu cred ca o plaje de cautare de la -10V la -15V este acoperitoare, 

 pentru diverse stari ale tuburilor. Deasemenea nu imi este clar de ce trebuie sa blochez amplificatorul si sa nu ii asigur un regim de putere 

 mai mic, daca nu se poate cel optim. O semnalizare desigur este foarte buna.

Eu as dori sa stiu cum faceti conversia de la 10 biti la 8, deoarece procesorul intern si epromul nu au decit 8 biti.

- convertor ADC pentru 0,55V = 10.0000.00xx

- processor primeste doar xxxx.xxxx

Adica cu alte cuvinte care este managementul informatiei generate de ADC-ul

  cu 10 biti in microcontroller si de ce Atmega-XXX are convertor de 10 biti

  si cum se folosesc ei in integralitate.

 

@gsabac

Editat de gsabac
Link spre comentariu
Distribuie pe alte site-uri

Nu inteleg ce conversie sa fac de la 10 biti la 8 biti si care este scopul acestei conversii. Cum sa iau o informatie stocata pe 10 biti si sa o ingramadesc pe 8 biti?

 

un programel care arata starea bitior din valoarea citita pe AI:

 

short sensorPin = A0;
short ledPin = 13;
boolean ledON = false;
short bit_0 = B00000001;
short bit_1 = B00000010;
short bit_2 = B00000100;
short bit_3 = B00001000;
short bit_4 = B00010000;
short bit_5 = B00100000;
short bit_6 = B01000000;
short bit_7 = B10000000;
 
void setup()
  {
  analogReference( DEFAULT);
  pinMode(ledPin, OUTPUT);
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  }
void DisplaySV( short SV)
  {
  short lowSV = 0;
  short highSV = 0;

  lowSV = lowByte( SV);
  highSV = highByte( SV);
 
  digitalWrite( 0, ( lowSV & bit_0));
  digitalWrite( 1, ( lowSV & bit_1));
  digitalWrite( 2, ( lowSV & bit_2));
  digitalWrite( 3, ( lowSV & bit_3));
  digitalWrite( 4, ( lowSV & bit_4));
  digitalWrite( 5, ( lowSV & bit_5));
  digitalWrite( 6, ( lowSV & bit_6));
  digitalWrite( 7, ( lowSV & bit_7));
  digitalWrite( 8, ( highSV & bit_0));
  digitalWrite( 9, ( highSV & bit_1));
  }
 
void loop()
  {
  DisplaySV( analogRead(sensorPin));

  delay( 1000);
 
  if  (ledON)
    {
    ledON = false;
    }
   else
    {
    ledON = true;
    }
    
  digitalWrite(ledPin, ledON);
  }
 

Link spre comentariu
Distribuie pe alte site-uri

Nu am programat un Atmega si vroiam sa imi confirmati ca datele convertorului pot intra in cele 2 registere  generale de 8 biti

  cu rezultat pe 16 biti sau in registrul de 16 biti cu rezultat pe 16 biti iar salvarea in eprom si operarea in DAC se face cu translatie

  de 2 biti spre Low.

 

Spor !

 

@gsabac

Editat de gsabac
Link spre comentariu
Distribuie pe alte site-uri

Si fiindca de undeva tot trebuie sa inceapa programul mi-am zis ca ar fi interesant modul de captare al semnalelor de la telecomanda:

ON/OFF, VOL(-), VOL(+)

 

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

const byte MSG_IDLE = 0;
const byte NOTIFY_IR_REMOTE_INPUT_CHANGE = 1;
const byte WAIT_TRAIL = 2;
const byte APPLY_IR_CODE = 3;

const byte interruptPin = 2;
const byte ledPin = 13;
const byte powerOnPin = 12;
const byte volMaxPin = 11;
const byte volMinPin = 10;
const unsigned long IR_OnOff = 0x2CAC;
const unsigned long IR_VolMin = 0x32B2;
const unsigned long IR_VolMax = 0x32CA;

volatile byte msg = MSG_IDLE;
unsigned long loopMicrosOld = 0;
unsigned long loopMicrosNew = 0;
unsigned long eta;
unsigned long IRCode;

boolean ledPinStatus = LOW;
boolean powerOnPinValue = LOW;
boolean volMaxPinValue = LOW;
boolean volMinPinValue = LOW;

byte maxIRInputLoops;

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

void setup()
  {
  Serial.end();
 
  pinMode( 0, OUTPUT);
  pinMode( 1, OUTPUT);
  pinMode( interruptPin, INPUT_PULLUP);
  pinMode( 3, OUTPUT);
  pinMode( 4, OUTPUT);
  pinMode( 5, OUTPUT);
  pinMode( 6, OUTPUT);
  pinMode( 7, OUTPUT);
  pinMode( 8, OUTPUT);
  pinMode( 9, OUTPUT);
  pinMode( volMinPin, OUTPUT);
  pinMode( volMaxPin, OUTPUT);
  pinMode( powerOnPin, OUTPUT);
  pinMode( ledPin, OUTPUT);

  digitalWrite( 0, LOW);
  digitalWrite( 1, LOW);
  digitalWrite( 3, LOW);
  digitalWrite( 4, LOW);
  digitalWrite( 5, LOW);
  digitalWrite( 6, LOW);
  digitalWrite( 7, LOW);
  digitalWrite( 8, LOW);
  digitalWrite( 9, LOW);
  digitalWrite( volMinPin, volMinPinValue);
  digitalWrite( volMaxPin, volMaxPinValue);
  digitalWrite( powerOnPin, powerOnPinValue);
  digitalWrite( ledPin, ledPinStatus);
 
  attachInterrupt( digitalPinToInterrupt( interruptPin), IRInterrupt, CHANGE);
 
  msg = MSG_IDLE;
  }

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

void loop()
  {
  switch( msg)
    {
    case MSG_IDLE:
      {
      Reset_eta();
      break;
      }
    case NOTIFY_IR_REMOTE_INPUT_CHANGE:
      {
      Notify_IR_Remote_Input_Change();
      break;
      }
    case WAIT_TRAIL:
      {
      Wait_Trail();
      break;
      }
    case APPLY_IR_CODE:
      {
      Apply_IR_Code();
      break;
      }
    }
  }

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

void Notify_IR_Remote_Input_Change()
  {
  ledPinStatus = !ledPinStatus;
  digitalWrite( ledPin, ledPinStatus);
 
  loopMicrosNew = micros();
 
  eta = loopMicrosNew - loopMicrosOld;
 
  if  ( maxIRInputLoops > 3)
      {
      if  ( maxIRInputLoops < 20)
        {
        IRCode = ( IRCode << 1);
        if  ( eta > 900)
          {
          ++IRCode;
          }
        }
      }
  ++maxIRInputLoops;
  loopMicrosOld = loopMicrosNew;
  msg = WAIT_TRAIL;
  }

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

void Wait_Trail()
  {
  loopMicrosNew = micros();
 
  eta = loopMicrosNew - loopMicrosOld;
 
  if  ( eta > 100000)
    {
    msg = APPLY_IR_CODE;
    return;
    }
  }

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

void Apply_IR_Code()
  {
  switch( IRCode)
    {
    case IR_OnOff:
      {
      powerOnPinValue = !powerOnPinValue;
      digitalWrite( powerOnPin, powerOnPinValue);
      break;
      }
    case IR_VolMin:
      {
      volMinPinValue = !volMinPinValue;
      digitalWrite( volMinPin, volMinPinValue);
      break;
      }
    case IR_VolMax:
      {
      volMaxPinValue = !volMaxPinValue;
      digitalWrite( volMaxPin, volMaxPinValue);
      break;
      }
    }
  IRCode = 0;
  maxIRInputLoops = 0;
  msg = MSG_IDLE;
  }
//--------------------------------------------------------------------

void Reset_eta()
  {
  loopMicrosNew = micros();
 
  eta = loopMicrosNew - loopMicrosOld;
 
  if  ( eta > 100000)
    {
    loopMicrosOld = loopMicrosNew;
    }
  }

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

void IRInterrupt()
  {
  msg = NOTIFY_IR_REMOTE_INPUT_CHANGE;
  }

 

Link spre comentariu
Distribuie pe alte site-uri

Sunt placut surprins de acest bloc functional.

Este o realizare complexa, modulara si deosebita pentru scopul "lamparului inrait" de a controla statica amplificatoarelor cu tuburi.

De fapt cea mai complicata constructie va fi softul si experimentarea sa. Acum 45 de ani am facut o constructie similara pentru

 un microprocesor MC6800, nu mi-a reusit si am cumparat apoi un chit Motorola.

 

Va urez spor si de-abia asteptam primele rezultate cu telecomanda si controlul tuburilor !

 

@gsabac

Editat de gsabac
Link spre comentariu
Distribuie pe alte site-uri

Multumesc, soft-ul chiar nu ar trebui sa-mi faca probleme ( deh, modestia). Interfata pentru teste atasata. Testele cu telecomanda le-am facut si merg foarte bine. Trei functii: ON/OFF, VOL+, VOL-

Butonul K_ON va avea, pe linga evidentul ON/OFF si intrarea in modul hard_setup. LED_ON va indica modul de lucru, ON, semnal_IR, hard_setup.

post-25928-0-75182700-1489225299_thumb.jpg

Link spre comentariu
Distribuie pe alte site-uri

La acest model de reglaj nu m-am gindit. Deci un motoras de curent continuu cu demultiplicator si cuplat direct pe axul potentiometrului de volum.

La acesta sunt ceva probleme, pe care le-am experimentat intensiv:

- motorul are inertie si se roteste suplimentar la comada de oprire;

- motorul trebuie oprit la capetele de cursa ca sa nu forteze sistemul mecanic sau trebuie folosit un ambreiaj;

- motorul trebuie oprit cind nu se da comanda de + sau - ;

- trebuie un traductor de pozitie daca doriti sa afisati si atenuarea, de ex in dB;

- motorasul face scintei la perii care se vor auzi in difuzoare;

- trebuie folosit un potentiometru dublu pentru stereo deci este nevoie si de echilibrarea canalelor.

 

Succes !

Asteptam primele probe.

 

@gsabac

Editat de gsabac
Link spre comentariu
Distribuie pe alte site-uri

Este vorba despre RK16812MG , trebuie sa apara doua bucati deja comandate. Singura problema este ca se fabrica doar 2x100k sau 4x100k. Va trebui sa renunt la trafo intrare defazor. O solutie ar fi un diferential la intrare cu sarcina trafo interstage. Toate la momentul lor

Link spre comentariu
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.

×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.

ATENTIE !!! Functionarea Tehnium Azi depinde de afisarea de reclame.

Pentru a putea accesa in continuoare site-ul web www.tehnium-azi.ro, va rugam sa dezactivati extensia ad block din browser-ul web al vostru. Dupa ce ati dezactivat extensia ad block din browser dati clic pe butonul de mai jos.

Multumim.

Apasa acest buton dupa dezactivarea extensiei Adblock