Strujni izvor 0-50A

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

_Maniac_ wrote:@abc

Puno hvala...

Jesi probao programirat sa programatorom za one konstantne vrijednosti ili skakanje sa 0-1023... To ti se nalazi u folderu Blinking LED 1sec, pa da i to snimis na shuntu kako bi izgledalo kad skace sa 0 na max... ako nije problem...

Dugujem ti cugu :)
Probacemo sve, ako nebudem zauzet za vikend probacu da napisem i neki programcic u C, pa da probam isprogramirati ovaj atmega, to bi bio prvi mikrokontroler koji nije mikrocipov :D .

Sto si nalio tinola u onaj shunt, mogao si zalemiti i neku zicu i ustedjeti malo :D .
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Ja sam za kontrolu struje direktno bez RC filtera ali to ovaj atmega8 ne moze, previse spor ADC za takvo nesto.

@Maniac, zasto overklokujes i to za 100%, atmega8 koja je predvidjena da radi na 8MHz ti stavio kristal 16MHz?
User avatar
_Maniac_
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 487
Joined: 02-09-2007, 00:12
Location: Bilje (pokraj Osijeka)
Contact:

Re: Strujni izvor 0-50A

Post by _Maniac_ »

Ma nema veze za tinol, bitno da bude dobro i debelo :)... Samo... bio je malo dugotrajno lemljenje, jer imam tinol 0.8mm, pa je ono... zajebano toliko toga zalemit s tako tankim... :)

Sto se tice "overclockanja"... Pa moze ici na 16mhz max, zar ne???
Capo Di Tutti Capi
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

_Maniac_ wrote:Ma nema veze za tinol, bitno da bude dobro i debelo :)... Samo... bio je malo dugotrajno lemljenje, jer imam tinol 0.8mm, pa je ono... zajebano toliko toga zalemit s tako tankim... :)

Sto se tice "overclockanja"... Pa moze ici na 16mhz max, zar ne???
Moze da radi i na 16MHz ali ako je stvarno 8MHz pitanje kako bi se poceo ponasati da radi na visoj ili nizoj temperaturi od sobne.

Postoji mogucnost da je to 16MHz verzija a da je proizvodjac samo printao 8MHz jer sve proizvodi u jednom proizvodnom procesu, ali to je samo nagadjanje.
User avatar
_Maniac_
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 487
Joined: 02-09-2007, 00:12
Location: Bilje (pokraj Osijeka)
Contact:

Re: Strujni izvor 0-50A

Post by _Maniac_ »

Evo vidi...

http://www.electronic-center.hr/product ... ts_id=6781" onclick="window.open(this.href);return false;
Capo Di Tutti Capi
User avatar
Kizo
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 387
Joined: 01-11-2009, 22:40
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by Kizo »

@ABC: E, ovo zadnje je speglano kako treba. Ne treba više dodatno povećavati filtar, a ovaj mali vrh koji šeće prema donje skresati nekom fast recovery ili shottky diodom na shuntu, kako si i sam rekao.

Što se tiče atmege, pogledaj oznaku na njoj, ako zadnje piše -16PU ili -16PI onda može da radi na 16MHz. Ako je L verzija, onda je za 8MHz, a oznaka je tipa atmega8L-8PC. Inače L verzija se upotrebljava gdje je potrebno da uređaj radi na manjem naponu napajanja.
User avatar
_Maniac_
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 487
Joined: 02-09-2007, 00:12
Location: Bilje (pokraj Osijeka)
Contact:

Re: Strujni izvor 0-50A

Post by _Maniac_ »

Trebala bi biti oznaka 16PU ako se dobro sjecam, jer sve sam kupio u isto vrijeme i ova koju imam kod kuce za multimetar i jedna koja je riknila je takva, a takva je mislim i onda sto sam poslao abc-u...
Capo Di Tutti Capi
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Strujni izvor 0-50A

Post by pedja089 »

Ovaj mali spic koji se vidi posle 2RC filtera mislim da je sasvim zanemarljiv.
Ja ne bih nista dirao vise oko toga, samo jos proveriti brzinu odziva, ali mislim da ce biti korektna.
User avatar
Kizo
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 387
Joined: 01-11-2009, 22:40
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by Kizo »

Moje mišljenje je da nam je odziv reda par ms i više nego prihvatljiv, s obzirom na vrijeme AD konverzije, a i rekli smo da ćemo se sa preopterećenjem/KS posebno obračunati.

Filter netreba nešto posebno dirati, ali zašto to nebi dotjerali do kraja kad je prilika, a i ABC je izrazio veliku želju da pomogne. Recimo shottky 1N5819 nije nikakav problem za pronaći, a trebala bi da dobro obavi posao.

@ABC: testiraj sa 100R na gejtu mosfeta da dobiješ veće špiceve.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Poslije stavljanja 100-tinak oma otpora izmedju logickog mosfeta i mikrokontrolera nije se nesto pogorsao signal poslije RC filtra ali je mosfet sada prakticno ne grije jer prije nije mogao da radi nekoliko minuta i da se prakticno usija bez hladnjaka.

Napisao sam kratak programcic u c za kontrolu PWM i ADC-a jos nije 100% gotov za adc.

Imam pitanja za atmelase, atmega8 na 16MHz radi prebrzo da bi se dobio iole precizni ADC, klok ADC treba da bude ispod 50kHz(tako pise atmel) , preskaler nemoze da spusti klok samo na 16000000/128=125000
Takodje koliko sam shvatio on dobija klok za ADC ulaz iz CPU-a , jel to tako?

Drugo max frekvencija za 10 bitnu preciznost PWM-a je 7,8kHz, i to na kloku od 16MHZ ,prilicno nisko.

Davno sam radio sa 8 bitnim PIC ali koliko mi se cini da su atmeli daleko iza sto se tice svega, osim brzine CPU-a tu su ispred, da li gresim :?:

Takodje atmelova uputstva za atmega mc su im katastrofalno losi.
User avatar
_Maniac_
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 487
Joined: 02-09-2007, 00:12
Location: Bilje (pokraj Osijeka)
Contact:

Re: Strujni izvor 0-50A

Post by _Maniac_ »

Cek jel nije ovo kod za kontrolu PWM, ali u bascomu...

Code: Select all

' define crystal speed and include file
$regfile = "m8def.dat" ' specify the used micro
$crystal = 16000000 ' used crystal frequency
$baud = 19200
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space

Config Portb.1 = Output

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1

Config Adc = Single , Prescaler = 128 , Reference = Avcc

Start Adc

'Program begin

Do
Pwm1a = Getadc(0)
Loop
End
Shema je isto sve sto imas sad, samo sto jos na vcc i adc0 spojis potenciometar od 1k...
Capo Di Tutti Capi
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Maniac, ne radim sa basicom pa da ga ne ucim, treba da jos doradim ovaj programcic ali me usporava hardver mc-a sa kojim nisad dosad radio pa jos treba malo dopisati i poraviti ovo.

Code: Select all

#define F_CPU 16000000UL
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>

uint8_t timer; //globalne var
uint16_t adc_val; //glob var

//Timer 0 overflow interrupt every ~1mS
ISR(TIMER0_OVF_vect){
	timer++;
	TCNT0 = 0xF0; //1,02ms interapt ,tajmer0
}

void PWM_out(uint8_t pwm)
{
OCR1A = pwm; //upis u PWM registar
}

uint16_t ReadChannel(uint8_t mux)
{
uint8_t i;
uint16_t result = 0; 
ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0); // frequency prescaler
// set to 8 (1) and ADC activate 
ADMUX = mux; // channel select
ADMUX |= (1<<REFS1) | (1<<REFS0); // internal reference use
/* after activating the ADC a “dummy Readout” are recommended, one read thus
a value and reject this, around the ADC “warm up to let”*/
ADCSRA |= (1<<ADSC); // a ADC transformation
while ( ADCSRA & (1<<ADSC) ) {
; // on conclusion of the conversion wait
}
/* actual measurement - average value from 4 following each other transformations */
for(i=0;i<4;i++)
{
ADCSRA |= (1<<ADSC); // a transformation “single conversion”
while ( ADCSRA & (1<<ADSC) ) {
; // on conclusion of the conversion wait
}
result += ADCW; // transformation results add
}
ADCSRA &= ~(1<<ADEN); // ADC deactivate 
result /= 4; // sum by four divide = arithm. Average value
return result;
}

int main(void)
{
DDRB = (1 << DDB1); // PORTB1 output 
TCCR1A = (1<<WGM11)|(1<<WGM10)|(1<<COM1A1); // 10bit ne invertujuci PWM
TCCR1B =  (1<<CS10); // preskaler PWM/1
TCCR0 = (1<<CS00)|(1<<CS02); // tajmer0/1024
TIMSK = (1<<TOIE0); //ukljucen interapt tajmer0
sei(); // ukljucen globalni interapti
uint16_t cuurent_out; 
cuurent_out = 512; // PWM out  1/2 of 1023

while(1){
		if(timer>4){ 
			timer=0;
			adc_val = ReadChannel(0); /* MUX bits on 0b0000 - > Channel 0 */
     	   //adc_val = ReadChannel(1); /* MUX bits on 0b0001 - > Channel 1 */
					}
		PWM_out(cuurent_out); //upis u PWM
	    }	
//Fatal error occured
	return(-1);
}
User avatar
Kizo
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 387
Joined: 01-11-2009, 22:40
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by Kizo »

Atmega8 na 16MHz radi prebrzo da bi se dobio iole precizni ADC, klok ADC treba da bude ispod 50kHz(tako pise atmel) , preskaler nemoze da spusti klok samo na 16000000/128=125000
Iz datasheeta
By default, the successive approximation circuitry requires an input clock frequency between 50
kHz and 200 kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the
input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate.
Znači ova tvoja računica je u redu, koristiš 128 prescaler.
Takodje koliko sam shvatio on dobija klok za ADC ulaz iz CPU-a , jel to tako?
U kratko da, dijeli se preko prescalera.
Drugo max frekvencija za 10 bitnu preciznost PWM-a je 7,8kHz, i to na kloku od 16MHZ ,prilicno nisko.
Dobro si primjetio. S ovim programom iz Bascoma, frekvencija PWM-a je točno duplo manja zato jer koristi Phase Correct PWM. U C-u možeš vrlo lako podesiti registre za Fast PWM Mode.
Davno sam radio sa 8 bitnim PIC ali koliko mi se cini da su atmeli daleko iza sto se tice svega, osim brzine CPU-a tu su ispred, da li gresim
Nebi sad da započnemo PIC vs. Atmel. Da, Atmeli imaju nešto sporiji ADC, ali nebi se baš složio da su "daleko iza sto se tice svega"
Takodje atmelova uputstva za atmega mc su im katastrofalno losi.
Stvar navike, ja se isto tako isprva nebi snašao na Microchipovim stranicama, ali siguran sam da i na jednim i drugim imaš sve što ti treba.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Ne malo sporiji vec... a i PWM je ista prica.

Ajde ti radis sa atmelima objasni sta znaci ovo. Znaci kad pocnem ADC , CPU mora da se zaustavi ili to ide automatski. Ovaj dio sto su upakovali o interaptima takodje mi nije najjasniji , ako neki interapt prekine konverziju ADC-a taj rezultat mogu okaciti macku o rep ili je validan?

Code: Select all

2. Enter ADC Noise Reduction mode (or Idle mode). The ADC will start a conversion
   once the CPU has been halted.
3. If no other interrupts occur before the ADC conversion completes, the ADC interrupt
   will wake up the CPU and execute the ADC Conversion Complete interrupt routine. If
   another interrupt wakes up the CPU before the ADC conversion is complete, that
   interrupt will be executed, and an ADC Conversion Complete interrupt request will be
   generated when the ADC conversion completes. The CPU will remain in Active mode
   until a new sleep command is executed.
User avatar
Kizo
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 387
Joined: 01-11-2009, 22:40
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by Kizo »

Gle, ne trebaš ništa zaustavljati CPU, ali može se dogoditi da neki interapt prekine očitavanje pa da dobiješ pogrešnu vrijednost. Zato za defaultno desno poravnanje moraš prvo pročitati ADCH, pa tek onda ADCL kako bi dobio ispravnu vrijednost.
User avatar
Kizo
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 387
Joined: 01-11-2009, 22:40
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by Kizo »

Vidim da te neke stvari muče pa sam evo napisao program koji bi trebao da čita vrijednost sa ADC0 i sukladno tome postavlja PWM. Ovo sam na brzinu sklepao iz datasheeta, pa ćeš morati da isprobaš dali radi.

Code: Select all

#include <avr/io.h>
#include <stdint.h> 
#include <avr/interrupt.h> 

static uint16_t theADCvalue;
int main (void) 
{ 
     ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Postavlja ADC prescaler na 128 - 125KHz sample rate @ 16MHz 
     ADMUX |= (1 << REFS0); // Postavi ADC reference na AVCC 
     ADCSRA |= (1 << ADFR);  // Postavi ADC na fr*e-Running Mode 
   
     TCCR1A = (1<<WGM11)|(1<<WGM10)|(1<<COM1A1); // 10bit Fast PWM
     TCCR1B =  (1<<CS10); // prescaler=1
   
   	ADCSRA |= (1 << ADEN);  // Enable ADC 
   	ADCSRA |= (1 << ADIE);  // Enable ADC Interrupt 
   	sei();   // Enable Global Interrupts 

   	ADCSRA |= (1 << ADSC);  // Pokreni ADC konverziju 

   	for(;;)  // Loop Forever 
   	{
	          OCR1A=theADCvalue; 
   	}
return(0);
} 

ISR(ADC_vect) 
{ 
	theADCvalue = (ADCH<<8) + ADCL;
}
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Pitanje kako se najjednostavnije programira atmega8 sa onim usb programatorom, i da li moze direktno iz avr studia.
User avatar
_Maniac_
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 487
Joined: 02-09-2007, 00:12
Location: Bilje (pokraj Osijeka)
Contact:

Re: Strujni izvor 0-50A

Post by _Maniac_ »

Pa samo pokreni onaj program sina prog, i ubaci hex i to je to... tako sam ja... e sad... ja imam win7 x64... a valjda bi i kod tebe trebalo tako... Windowsi ga sami nadju...
Capo Di Tutti Capi
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Juce nije radio forum pa evo danas neke informacije.
Programirao atmega8 , nekada nece, onda izvucem programator iz usb pa ponovo ukljucim nekada proradi nekada ne , uglavnom poslije nekoliko pokusaja radi.

Probao fast PWM(uspeo u C-u da setujem atmega8 na 15.6kHz ali mi se cini da je to silovanje tog mc-a) i ima vise smetnji nego sa 7,8kHz a i tranzistor se vise grije.

Signal na atmega8 prije otpora 100E je prilicno los, mosfet istitrava, takodje vrlo spori slew rate , izgleda treba mosfet driver.

Gornji kanal na osciloskopu signal PWM sa atmega8, donji sa RC filtera.
PWM se polako povecava do max i onda gasi i ponovo pocinje od nule, u trenutku gasenja PWM vide se brzina pada napona na RC filteru.

Evo snimka.
http://www.youtube.com/watch?v=wY6nbVdwHIo" onclick="window.open(this.href);return false;
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Da se dopunim u vezi problema sa losim signalom PWM-a sa atmega, izgleda da atmega8 na toj brzini zbog internog kapaciteta pinova, male izlazne struje 20mA ili ko zna cega ima problema , koliko se sjecam da nisam imao sa pic takvih problema ali kad bude vremena moze se i to probati, izgleda treba mosfet driver za vece frekvencije PWM.
Post Reply