Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

- tehdään omassa elektroniikkalabrassa Matti Korhonen ???

- Köykkä toimittaa joystickin kaasukahvan softan

2. CAN-ohjattu kontaktori

...

- Vahvistus kontaktoria varten

Sarjaliikenne

Sarjaliikennettä on testattu Atmelin kirjastojen avulla. Alla oleva esimerkkikoodi tulostaa sarjaväylään käynnistetyn ajastimen lukemaa

Code Block

#define XTAL 3686400L
#define TICKSPERMS (XTAL / 1000 / 5 - 1)

#include <avr/io.h>
#include "led_drv.h"
#include "timer8_drv.h"
#include "uart_lib.h"
#include "uart_drv.h"
#include "timer16_drv.h"


void wait_ms(uint16_t ms)
{
uint16_t a, b;
for (a = ms; a > 0; a--)
for (b = TICKSPERMS; b > 0; b--)
asm("nop");
}

int main(void)
{
    TCCR1B |= (1 << CS10); //16bit Timerin setup
    U16 temp=0;

    Uart_select(UART_0); //Uart 0 valittu
    uart_init(CONF_8BIT_NOPAR_1STOP,115200); //Uartin initialisointi kirjaston valmiilla funktiolla (8bit data, ei parityä, 1stoppi bitti, 115200 nopeus)

	for(;;)
	{
		temp=TCNT1; //Rekisteri, josta loytyy kellon tikitys
		uart_mini_printf("\r%u\n",temp); //Tulostetaan vaylalle
	}
}

16-bit ajastin

16-bittisen ajastimen käyttöönotto tapahtuu rekistereiden avulla.

Code Block

 TCCR1B |= (1 << CS11);

Yllä oleva koodi käynnistää 16bittisen ajastimen (Timer1) asetuksella "clkI/O/8 (From prescaler)".

Code Block

 TIMSK1 |= (1 << TOIE1);

Yllä oleva koodi sallii Timer1:n ylivuotokeskeytykset.

Code Block

 sei();

Yllä oleva funktio sallii keskeytykset (laittaa SREG rekisterin I-bitin arvoon 1).

Tämän jälkeen timerin pitäisi olla päällä ja tikittää kokoajan. Pelkästä timerista ei kuitenkaa aina ole hyötyä. Esim. pidempiä aikoja halutessa, tulee laskea timerin kiertämät kierrokset. Se onnistuu ISR funktion avulla, joka löytyy avr:n interrupt.h tiedostosta.

Code Block

ISR(TIMER1_OVF_vect) //keskeytysaliohjelma, hypataan tanne joka kerta, kun timer1 ylivuoto tapahtuu
{
	Timer++;
	uart_mini_printf("\rTimerin arvo: %u\n",Timer);
}

ISR funktioon (keskeytysaliohjelma) mennään aina automaattisesti, kun Timer1:n ylivuotovektori täyttyy (joka kierroksella). Tällöin voidaan kasvattaa vaikkapa Timer muuttujaa, jolloin tiedetään kierrosten lukumäärä.

Lähdön vahvistaminen 

Image Added

Yllä olevalla kytkennällä pystytään vahvistamaan mikro-ohjaimen lähtöä niin, että on mahdollista ohjata jotain laitetta ulkoisen virta-lähteen avulla.

Virranmittausanturi

Image Added

Yllä olevassa kuvassa on kytkentä Allegro ACS754 virranmittausanturille. Virranmittausanturilla voidaan selvittää paljon jokin toimilaite vie virtaa.

Virrankulutus saadaan laskettua seuraavanlaisesti:

  • Lasketaan paljon yksi ampeeri on voltteina
    • Yksisuuntainen syöttöjännite jaetaan kahdella, 5V / 2 = 2.5V
    • jakamalla 2.5V 50A:lla saadaan 0.05V/A
  • Mitataan signaalin vahvuus kun toimilaite on pois päältä ja kun toimilaite on päällä
  • Lasketaan näiden kahden arvon erotus ja jaetaan se 0.05V/A niin saadaan virrankulutus
  • esim. (2.5V-2.41V) / 0.05V/A = 1.8A