Skocz do zawartości

Sterownik lasera z przełączaniem TTL/ANALOG


qulet

Pomocna odpowiedź

Witam !

Zakupiłem taki moduł lasera:

opis:

ogniskowa:można regulować

długość fali: 445-450 (Blu-ray)

Moc wyjściowa: 15 W impulsowe

średnia 8 W (Max)

modulacja częstotliwości: TTL może być modulowane

0 v Off

5 v NA

pwm częstotliwość < 20 Khz

Napięcie pracy: DC = 12 V

Prąd pracy: < 4A

ogniskowa: 15mm ~ 50mm; (może regulowany)

temperatura pracy: 15 stopni do 45 stopni

średnica plamki: 15mm ~ 50mm w ≤Φ0. 12 (mm)

tryb pracy: impuls lasera 100 ns Duty 50%,
z modulacji TTL/ modulacji analogowej

materiał: twardy aluminium + mosiądz

wykończenie: anodowane na Czarno + piaskowanie

rozpraszania ciepła: Wentylator

Oczywiście od sprzedawcy nie otrzymałem żadnych informacji na temat jak i co należy podłączyć do poru TTL/ANALOG aby sterować mocą lasera analogowo. Sterowanie TTL ogarniam, ale nie wiem co należy zapodać na wejście w trybie przełącznika ANALOG.

Proszę o pomoc !

[ Dodano: 05-06-2018, 19:30 ]

Zbudowałem jeszcze coś takiego :

z myślą o podłączeniu do wejścia analogowego tego lasera.

Wstyd się przyznać ale nie wiem nawet jak sprawdzić czy ten DAC działa. Może ktoś pomoże. Dysponuję oscyloskopem DSO138, generatorem,fala prosdtokąt TYP G432. Tylko brak mi wiedzy jak można sprawdzić poprawność zmontowania i działania tego DAC.

Z góry dziękuję za okazaną pomoc !

Link do komentarza
Share on other sites

Rany, to chyba automatyczne tłumaczenie z chińskiego na angielski a potem z angielskiego na polski..

Ja bym zrozumiał to tak: masz wejście de facto analogowe wyskalowane tak, że 0V to moc 0% a 5V to 100%. Jeżeli przyłożysz do tego sygnał cyfrowy rozpięty między 0V a 5V to masz modulację cyfrową PWM - chwilowa moc lasera będzie wahała się między wartościami skrajnymi, ale średnio będzie taka jakie jest wypełnienie sygnału cyfrowego: im więcej "jedynek" w stosunku do "zer" tym więcej mocy.

Zawsze jednak możesz tam podać napięcie 0..+5V ze zwykłego potencjometru lub np. DACa i mieć ciągłą regulację analogową.

Jeśli masz przełącznik trybów no to sprawa jest jasna.

Twój DAC to dwukierunkowy licznik 8-bitowy (zrobiony z dwóch kostek po 4 bity) obciążony tzw. drabinką R-2R. To klasyczny przetwornik C/A, tutaj "doprawiony" buforem na wzmacniaczu operacyjnym.

Jeśli chcesz to sprawdzić, zrób tak:

- wejście Direction podłącz przez opornik 100k do masy a od samego wejścia daj przycisk do Vcc, coś jak na wejściu Reset.

- to samo z wejściem Step

- zapnij się woltomierzem na wyjście wzmacniacza

- włącz zasilanie, przyciśnij i puść Reset - na wyjściu liczników powinien być stan 00000000 który drabinka R-2R przełoży na napięcie 0V na wejściu (pin 3) wzmacniacza. Na jego wyjściu (pin 1) zawsze powinno być to samo - ten stopnień ma wzmocnienie x1.

- wciśnij i trzymaj Direction, jeśli na tym wejściu jest stan wysoki to liczniki będą liczyć do przodu

- przyciskaj Step, napięcie z drabinki powinno iść w górę praktycznie aż do osiągnięcia Vcc, to samo na wyjściu wzmacniacza

- przewinięcie liczników przez wartość 255 (stan 11111111) powinno skutkować powrotem napięcia w okolice 0V - układ nie ma ograniczenia górnego (ani dolnego) więc za dużo impulsów Step spowoduje gwałtowny spadek napięcia i mocy lasera

- w przypadku gdy będziesz "taktował' przyciskiem Step przy puszczonym Direction liczniki będą zliczać w dół i napięcie powinno maleć i znów, po osiągnięciu stanu 00000000 kolejny Step przekręci je na 11111111 i moc wzrośnie do maxa.

  • Lubię! 1
Link do komentarza
Share on other sites

marek1707

Dziękuję za obszerne wyjaśnienie sposobu sprawdzenia DAC dziś wieczorem spróbuję to zrobić.

Pozdrawiam !!!

[ Dodano: 06-06-2018, 18:06 ]

Sprawdziłem w/g Twojego przepisu. Działa !!! Jest jeden problem napięcie rośnie maksymalnie 3,9V powinno rosnąć do 5V , żeby wykorzystać cały zakres modulacji... marek1707 możesz coś poradzić ? Ja zamiast TLV272 mam LM358 to pewnie dlatego niemam pełnego zakresu.

Link do komentarza
Share on other sites

Ech, no tak. Drabinka R-2R, jeśli jest dobrze zmontowana i sterowana z wyjść CMOS nie może nie działać. Zmierz napięcie na niej czyli na wejściu wzmacniacza - pewnie okaże się OK. Problemem jest sam wzmacniacz operacyjny. Nie pamiętałem tego, że jego wyjście może co prawda przemiatać cały zakres od 0 do Vcc, ale wejście już nie. Wg danych producenta jego maksymalne napięcie wejściowe nie może podchodzić do Vcc na bliżej niż jakieś 1.3V i to pewnie jest przyczyna ograniczenia na wyjściu.

Rozwiązania są trzy:

- albo zmodyfikujesz drabinkę tak by dawała mniejszy zakres napięć np. tylko do 2.5V a potem skonfigurujesz wzmacniacz (dwoma dodatkowymi opornikami) żeby miał wzmocnienie x2,
- albo zmienisz wzmacniacz - jak rozumiem z numerów nóżek masz go w DIP lub SO8, tak? Napisz dokładnie co wstawiłeś, żeby nie trzeba było płytki ciąć tylko wstawić odpowiednik pin-to-pin

- albo podniesiesz zasilanie samego wzmacniacza np. do przedziału 8-12V. Wtedy jego wejście będzie miało margines pracy a wyjście, tak jak teraz, będzie podążało grzecznie za wejściem aż do 5V.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Mam wstawiony LM358N TLV272 nie mogłem zakupić... spróbuje zasilić wzmacniacz z 12V zobaczę co będzie się dziać...

Zmiana zasilania POMOGŁA teraz jest pełen zakres 0-5,2V. Mam jeszcze pytanie jaka jest funkcja opornika regulowanego 10K na wyjściu ze wzmacniacza ?

Jeszcze raz dziękuję za pomoc muszę to jeszcze sprawdzić z laserem . Napiszę jak wypadną próby

Link do komentarza
Share on other sites

LMx58 mają jeszcze gorsze wejście niż ten TLV a do tego ich bipolarne wyjście także nie rośnie gdzieś powyżej Vcc-1.5V. No toś dał do pieca.. Na szczęście podciągnięcie zasilania wzmacniacza pomoże także i w przypadku LM358 🙂

EDIT: Może w przyszłości staraj się nie wprowadzać takich tajnych zmian albo pisz o tym zaraz na początku, bo typy niektórych elementów nie są podawane tak od czapy 😐 No dobra, czekamy na wyniki pomiarów.

Link do komentarza
Share on other sites

To regulacja amplitudy wyjściowej, jak gałka głośności we wzmacniaczu mocy. No ale Ty przecież mierzyłeś na wyjściu wzmacniacza, tam powinno być 0..5V. Potencjometr zmniejsza tę skalę, np. ustawiony w połowie zrobi z tego 0..2.5V. Niestety potencjometr ma tę wadę, że jego napięcie wyjściowe zależy nie tylko od pozycji suwaka, ale także od tego co się podłączyło dalej. Jeżeli wejście drivera lasera ma jakiś podciąg do plusa lub lub do masy lub ogólnie jakąś małą rezystancję wejściową, napięcia z potencjometru będą przekłamane. Ja bym go wywalił i podpiął bezpośrednio driver do wyjścia wzmacniacza. Przecież od regulacji mocy jest DAC.

I co, jest lepiej przy 12V zasilania wzmacniacza?

  • Lubię! 1
Link do komentarza
Share on other sites

Ok, nie zauważyłem tego wpisu, dzięki, to dobra wiadomość.

Jeszcze na marginesie: mam nadzieję iż zdajesz sobie sprawę z tego, że taki 8-bitowy DAC zrobiony "na piechotę" z oporników wymaga użycia elementów o tolerancji lepszej jak 0.2%? Nie wiem skąd to ściągnąłeś, ale moim zdaniem trochę bez sensu jest wrzucać do sieci takie schematy, bo wygląda to ładnie tylko na ekranie. Jeśli wykonasz taką drabinkę nawet z oporników 1% (a przecież zwykle mamy 5 lub 10%) to dwa ostatnie bity są czystym szumem. Po zmianie zwartości licznika nawet o 3 w górę napięcie wyjściowe może spaść troszkę zamiast wzrosnąć o 3/256. A już w ogóle źle jest zwykle przy przejściu przez połowę, ze stanu 01111111 do 10000000.

Dobrze jest wiedzieć czego się po układzie spodziewać, choć podczas pracy lasera to pewnie nie ma wielkiej różnicy. No może jakieś niuanse gdy wypalasz widoczki z delikatnymi przejściami tonalnymi. W każdym razie układowi by niewiele zaszkodziło gdybyś okroił R-2R tylko do 6 a może nawet i 5 bitów. Wtedy przynajmniej byłby na pewno monotoniczny i Step w jedną powodowałby zawsze wzrost napięcia a Step w drugą - spadek 😐 Teraz z pewnością tak nie jest. Są oczywiście gotowe, scalone DACe z wejściami równoległymi, choć coraz ich mniej. Są też potencjometry cyfrowe (czyli też DACe) z wejściami Up i Down czyli prawie to coś co zrobiłeś tylko w jednym małym scalaczku 🙂

Link do komentarza
Share on other sites

Dziś zrobiłem coś takiego na MCP4725


/* This program is deigned to act as an interface between the grbl UNO board
* and your laser driver analog input.
* 0 = laser off
* -4095 = laser maximum
* 
* stated another way
* when Z-Axiz = 0 there is 0 volts sent to the laser driver
* when Z-Axis = -1 there is 5 volts sent to the laser driver
* 
* Z step/mm set to 4095
* Z Feedrate should be set to 439.5604 mm/min
* Z Max Depth set to -1 mm
* 
*/

#include <Wire.h>
#include <Adafruit_MCP4725.h>

Adafruit_MCP4725 dac;

#define STEP 2 // digital pin 2 = interrupt 0
#define DIR 3 // digital pin 3 not used as an interrupt in this project

int pulseCounter = 0;

void setup() 
{
Serial.begin(115200);
Serial.println("grbl Interface");

attachInterrupt(STEP - 2, IRQhandler, RISING);
pinMode(DIR,INPUT_PULLUP);

dac.begin(0x62);
}

void loop() 
{ 
if (pulseCounter > 0)
{
pulseCounter = 0;
}
if (pulseCounter < -4095)
{
pulseCounter = -4095;
}

dac.setVoltage(map(pulseCounter, 0, -4095, 0, 4095), false);
}

void IRQhandler()
{
if (! digitalRead(DIR))
{
pulseCounter++;
}
if (digitalRead(DIR))
{
pulseCounter--;
}
}

Niestety nie działa.. Nawyjściu jest cały czas 2.6V i nic się nie zmienia. podczas zapodawania sygnał STP i DIR.

Pozdrawiam

[ Dodano: 07-06-2018, 21:06 ]

NA MONITORZE SZEREGOWYM TEN DAG DZIAŁA Z INNYM KODEM


#include <Wire.h>
#include <Adafruit_MCP4725.h>
#define voltsIn A0

Adafruit_MCP4725 dac; // constructor

void setup(void) {
 Serial.begin(9600);
 dac.begin(0x60); // The I2C Address: Run the I2C Scanner if you're not sure  

}

void loop(void) {

   uint32_t dac_value;
   int adcValueRead = 0;
   float voltageRead = 0;

   float dac_expected_output;


   for (dac_value = 0; dac_value < 4096; dac_value = dac_value + 15)
   {
     dac_expected_output = (5.0/4096.0) * dac_value;
     dac.setVoltage(dac_value, false);
     delay(250);
     adcValueRead = analogRead(voltsIn);
     voltageRead = (adcValueRead * 5.0 )/ 1024.0;

     Serial.print("DAC Value: ");
     Serial.print(dac_value);

     Serial.print("\tExpected Voltage: ");
     Serial.print(dac_expected_output,3);

     Serial.print("\tArduino ADC Value: ");
     Serial.print(adcValueRead);

     Serial.print("\tArduino Voltage: ");      
     Serial.println(voltageRead,3);      
   }    
}

[ Dodano: 08-06-2018, 15:24 ]

To chyba wina złego adresu dac.begin(0x62) Jutro to sprawdzę.......

405054156_SteppertoAnalog.thumb.png.2834b1711b48fe56aa37af290cd0e9a5.png

IMG_8400.thumb.jpg.9f3d4d854f829c0882f471e5d7fe3eac.jpg

Link do komentarza
Share on other sites

(edytowany)

Proszę o pomoc w identyfikowaniu problemy z kodem w w/w DAC.

Sytuacja  jest następująca: Program Mach3 wysyła do DAC dwa sygnały STP  i DIR. Mam to podłączone do osi "A" tak ze przesunięcia liniowe 0-1 mm  powoduje wzrost napięcia na DAG : :

0 mm - 0 V

0,5 mm - 2,5 V

1 mm - 5 V

Do tego momentu  jest  wszystko "OK"

teraz następuje  zmiana kierunku  DIR  był  wysoki teraz jest niski

Zliczanie przez DAC sygnałów przestaje być liniowe przesuwam oś "A"   z 1 mm na 0,5 mm powinienem na DACu mieć ok  2,5 V a mam wartość napięcia bliską  0 V.
Przesuwając wirtualną oś o mniejsze wartości, napięcie maleje ale jak gdyby dwukrotnie szybciej. DAC powinien pokazywać jednakowe wartości napięcia dla jednakowych przesunięć w dwóch kierunkach...

Czy może ktoś coś poradzić ?

Jak zmodyfikować kod, aby na  monitorze portu szeregowego odczytywać aktualną wartość "pulseCounter " ?

Pozdrawiam !

 

Edytowano przez qulet
Link do komentarza
Share on other sites

Chęci to może i są, ale szansy na pomoc nie dałeś. Nie wiemy ani jak wygląda układ, ani jaki program w nim pracuje. Jakieś ochłapy wrzucałeś wcześniej, nie wiadomo czy to wersje aktualne czy coś zmieniałeś. W tej sytuacji rada: "poszukaj w kodzie" brzmi słabo, prawda? Choć jest jedyną możliwą. Możesz powstawiać wydruki kontrolne na których zobaczysz wartości zmiennych, może to Cię naprowadzi? Przecież nikt nie zgadnie ani nie wskaże palcem błędu w programie którego nie widzi. Ty masz tam cały sprzęt, modyfikuj kod, wgrywaj i wyśledź gdzie i co robisz źle zamiast rozkładać ręce. Umiejętność znajdowania i porawiania błędów we własnych projektach to podstawa pracy inżyniera.

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.