Strujni izvor 0-50A

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

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
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 spojio sam LED-icu i svijetli od MAX do 0 i opet skoci na max :)...

A kad spojim ponovno sve po onoj shemi, bez shunta... dobijem ovako...

Pwm normalno radi od 0-1020, a ADC pada od kojih 840 pa do 36 i opet skoci na 840...

Zarulja ne svijetli, na izvodima za zarulju napon je 9.55V... A cim spojim zarulju napon pada na 0 i zato ne svijetli :)...

Evo video da radi led-ica...


http://www.youtube.com/watch?v=jHudfeYfKcg

Pa moze savjet sta dalje... jer vidljivo je da pwm radi, ali onda nesto s ovom shemom vjerojatno nevalja... valjda...

http://img260.imageshack.us/img260/20/shemar.jpg
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 »

Kako ti adc moze ocitavati nesto a da shunt nije spojen a ni zarulja ne svijetli?
Probaj sa onim logickim mosfetom bez ovog mosfet drajvera sto si pravio. Takodje prebaci mosfet drajver u low side ulaz i izlaz, presjeci na PCB veze i prespoji drugacije, onda spoji mosfet onaj svoj kako si spajao prije po kizinoj shemi.
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_ »

ajd mi skiciraj shemu... nekontam sta mislis samo sa logickim mosfetom, to je onas sto si mi poslao RFG70N06???
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 »

Sta da skiciram, spojis mosfet direktno na izlaz PWM sa atmela i izmedju otpor od 100oma ostalo spojis kako se spajaju mosfeti.
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_ »

ahaa... znaci nema drivera, nema one diode, kondenzatora od 100mF el i 100nF... Znaci drito ga bubnem na pwm... jel ne bi trebao prije toga staviti bar optocoupler ili nesto... a u biti idem probat :)
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 »

Nisi odgovorio kako ti adc ocitava promjenu struje na shantu a zarulja ne svijetli?
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_ »

a neznam :)... ocitava promjenu na adc-u, al nije svijetlilo, jedino se mosfet driver u sekundi pregrije...


evo spojio sam samo onako kako si rekao i svijetli, opet dobivam neki adc, a nista nije spojeno... pa sad do cega to moze biti... nekontam...

http://www.youtube.com/watch?v=vq22djR-gAU" onclick="window.open(this.href);return false;


mozda moguce da se mikrokontroleru sprzio adc, pa halira ili sta vec???
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 »

Nesto ti tu nije spojeno dobro, nemoze adc da pokazuje napon kad zarulja ne svijetli a kad svijetli ne pokazuje nista. adc si testirao prije i pokazivao je kad postoji veci napon ocitavao je veci napon a kad je manji napon ocitavao je manji broj.

A ovo sto pokazuje na PWM maximum a zarulja ne svijetli zato sto je PWM setovan u invertovanom modu.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Imas voltmetar pa izmjeri napon na ulazu adc-a ili na shunt otporu da ne meditiramo previse.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

Evo ti kod , provjeri da li sam mozda napravio neku gresku, trebalo bi da kad pritiskas tipke povecava za +1 PWM , poslije treba prepraviti da ako se drzi duze da se povecava korak za koji povecava PWM.

Kako nemam vremena da proucavam datasheet za taj atmel i da ukljucim hardverski tajmer a pod linuksom nemogu da simuliram taj kod da vidim koliko vremena treba da izvrsi x linija koda onda sam izmijeni ovo
ako lcd u jako dugackim vremenskim intervalima osvijezava displej ili u jako kratkim.
if(time>25000)
broj promijeni na 10000 ili 50000 ili vec probaj sam mozes do 60000 ispod recimo 2000-3000 nemoj jer taj atmel treba da je jako brz.

PWM ce u startu biti na pola vrijednosti.

Izbrises test_lcd.c i ovo sve dolje kopiras ponovno i probas kompajlirati.

Code: Select all


//#define F_CPU 8000000UL

#define SWITCH_SAMPLE         50 // 50ms

#define SwUp()               (((PINB&0x02)==0) ? 0 : 1 ) //PB1

#define SwDown()             (((PINB&0x01)==0) ? 0 : 1 ) //PB0





#include <stdlib.h>

#include <avr/io.h>

#include <avr/pgmspace.h>

#include <avr/interrupt.h>

#include "lcd.h"

#include <util/delay.h>



uint16_t y,ADCvalue,target_current=512;







void ADC_Init(void)

{



	// Configure ADC pins (inputs and disabled pull-ups).

	DDRB &= ~((1<<PB6)|(1<<PB7));

	PORTB &= ~((1<<PB6)|(1<<PB7));



	ADMUX = (1<<REFS0) | (1<<REFS1)| (1<<REFS2) | (1<<MUX0) | (1<<MUX3) | (1<<MUX4);

	

	ADCSRA = (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2) | (1<<ADATE); 

	ADCSRB = 0;

	DIDR0=(1<<AREFD);

	DIDR1= (1<<ADC9D) | (1<<ADC8D);



}





void PWM_Start(void)

{

	

	TCCR1A = (1<<COM1B1)|(1<<COM1B0)|(1<<PWM1B);

	TCCR1D = (0<<WGM11)|(0<WGM10);

   y=1023;

   TC1H = (y >> 8);

   OCR1C =(unsigned char)y;



	// Set PWM port pin to output.

	DDRB |= (1<<PB3);

	

	// Enable PLL, use full speed mode.

	PLLCSR = (0<<LSM) | (1<<PLLE);

	



	// Now wait for PLL to lock.

	do{ 

	}while((PLLCSR & (1<<PLOCK)) == 0);



	// Use PLL as clock source.

	PLLCSR |= (1<<PCKE);

	

	// CLK PCK = 64MHz / 1 = 64MHz.

	TCCR1B |= (0<<CS13)|(0<<CS12)|(1<<CS11)|(0<<CS10);

}





void test_button(void)

{

uint8_t switch_up=0,switch_down=0;

uint16_t t_switch_up=0,t_switch_down=0; 



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

     //Ako ti je stanje prekidaca isto kao i varijabla

     if( SwUp() == switch_up){



          //resetiras timer

          t_switch_up = 0;

     }



     //inace provjeri\u0161 jeli proslo debounce vrijeme

     else if( t_switch_up > SWITCH_SAMPLE ){

      

          //izjednacis varijablu sa novim stanjem

          switch_up = SwUp();

   

          //i ponovno resetiras brojac

          t_switch_up = 0;   

      

          //Ako je  tipka  stisnuta i izvrsis povecanje target struje   

          if( !switch_up ){



               target_current++;      

          }

     }



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



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

     //Ako ti je stanje prekidaca isto kao i varijabla

     if( SwDown() == switch_down){



          //resetiras timer

          t_switch_down = 0;

     }



     //inace provjeri\u0161 jeli proslo debounce vrijeme

     else if( t_switch_down > SWITCH_SAMPLE ){

      

          //izjednacis varijablu sa novim stanjem

          switch_down = SwDown();

   

          //i ponovno resetiras brojac

          t_switch_down = 0;   

      

          //Ako je  tipka  stisnuta i izvrsis povecanje target struje   

          if( !switch_down ){



               target_current--;      

          }

     }



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













}







int main(void)

{

    char buffer[4],buffer1[4];

	uint16_t time=0;

    

	ADC_Init();

    PWM_Start();

	sei();

	_delay_ms(500);

    /* initialize display, cursor off */

    lcd_init(LCD_DISP_ON);

	lcd_clrscr();



for (;;) { 

	

  time++;	

  test_button();

  

  if(target_current>1022)

  	{

  	target_current=1022;

  	}

  

  if(target_current<1)

  	{

  	target_current=0;

  	}

   

   

  TC1H = (target_current >> 8);

  OCR1B =(unsigned char)target_current;

	

   

   

       

  if(time>25000)

  		{

		time=0;

		/* convert interger into string */

        itoa( ADCvalue , buffer, 10);

        itoa( target_current , buffer1, 10);

		

		lcd_clrscr();

		lcd_gotoxy(0,0);

        lcd_puts("ADC=\n");

        lcd_gotoxy(4,0);

        /* put converted string to display */

        lcd_puts(buffer);

		

		lcd_gotoxy(0,1);

        lcd_puts("PWM=\n"); 

        /* convert interger into string */

        lcd_gotoxy(4,1);

		/* put converted string to display */

        lcd_puts(buffer1);

 		}

             

    }

}



 

 ISR(ADC_vect)

{

   ADCvalue = ADCW;

}

 
    

  

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_ »

Otpor na shuntu skoci na cca 50mV i onda ide do 0, pa opet tako...

a napon na adc ide od 140mV do 3, pa opet tako... jasno mi je da nista nije spojeno, pa ne kontam odakle taj napon...

ovako je spojeno, samo tamo gdje ide mosfet na masu stavljen je shunt...
http://img189.imageshack.us/img189/6907/capture1ov.jpg
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 »

Spoji ADC na shunt, pa javi kako se onda ponaša.
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_ »

Kad spojim adc na shunt, dobijem da se napon mijenja od kojim 0.5V do 0...
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:Kad spojim adc na shunt, dobijem da se napon mijenja od kojim 0.5V do 0...
adc ne pokazuje decimalne vrijednosti, mislis ocitavas voltmetrom.
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 »

Više bi odgovarao snimak kao onaj prethodni.
abc
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 498
Joined: 08-03-2007, 20:19
Location: Hrvatska

Re: Strujni izvor 0-50A

Post by abc »

kizo mozda znas odakle napon na adc ako je setovan kao ulaz i pull up otpor je iskljucen :D
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 »

Baš smo jučer Noćni i ja nešto raspravljali o tome, bilo je raznih ideja, ali nismo smislili ništa pametno. Ovako na daljinu... jedino bacati grah pa vidjeti :D
Kažem zato neka spoji shunt i sve, pa ćemo vidjeti kako se ADC ponaša.

@Maniac: ako ti nije bed daj video kao maloprije da vidimo vrijednosti ADC-a, mjereni napon nas trenutno ne zanima previše pošto se lako izračuna. Jedino koliki mjeriš referentni napon? Izmjeri na AREF pinu (trebao bi biti oko 2.56V)
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 snimio sam, samo dok to uploada...

samo cudna stvar... znaci kad odem na aref... koji je spojen preko kond na masu... i PWM i ADC se na display-u ne mijenjaju, ali se zarulja pali i gasi... sad je ADC od 1023-0...

u biti sve na snimici, ako nesto treba jos izmjerit, samo recite...
Capo Di Tutti Capi
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_ »

Video...

http://www.youtube.com/watch?v=2q9r7Qq4ySQ" onclick="window.open(this.href);return false;

Nadam se da se sve vidi, ako ne, recite sta da ponovno snimim...
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 »

Ovdje na slici je sve u redu najveci sjaj zarulje vrijednost na adc-u vrlo visoka , puno visa nego je bi trebalo.
Ono kasnjenje se moze objasniti da se displej refresuje relativno sporo u odnosu na kako se mijenja pwm i adc, trebalo bi smanjiti vrijeme refresa lcd-a.

Ovakvim spajanjem pipalica na nozice si na najboljem tragu da spalis atmel ili neki izlaz. Spajaj na nozice kondenzatora, otpora ili ulaz na pcb ako je moguce.
Post Reply