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

Ryhmä

Jukka Tamminen

Tomi Koponen

Toni Niittyjoki

Joona Kujala

Tehtävää

1. Hall anturin luku spi liitännän kautta  ja kirjoitus can väylään J.T.

- komponenttiluettelo

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

- Köykkä toimittaa kaasukahvan softan

2. CAN-ohjattu kontaktori

3. CAN-ohjattu shuntti

4. Pienoismalli purjeveneestä, langaton ohjaus TK toimittaa palikat langattomaan testaukseen

SCP-1000 anturi (harjoiteltu Hall anturia varten)

AVR-DVK90CAN1 kehitysalustalla testattu VTI:n SCP1000-paineanturin lukua SPI-väylän kautta. Anturin data (paine,lämpötila) siirretty CAN-viesteihin väylälle.

Testin pohjana on käytetty VTI:n ATMEGA16L prosessorille suunnattua vapaata esimerkki c-koodia. Koodista käytettiin lähinnä oisioita SCP1000 anturin initialisointiin ja asetuksiin. Anturin DRDY-pinniä (data valmista luettavaksi) ei ole fyysisesti kytketty, vaan sen tieto luetaan suoraa anturin rekisteristä. CAN-viestit muodostetaan ATMEL:n esimerkistä opitulla tavalla.

Kontaktori

Kontaktoria varten on kehitetty ohjelmaa, joka lukee can-väylää ja tottelee tietynlaisia can-viestejä. Viestit tunnistetaan tietyn datatavun sisällön ja viestin id:n perusteella. Can viestillä voidaan laittaa haluttu lähtö päälle vapaasta portista tai vaihtoehtoisesti sulkea se.

Tehtävää:

- Kontaktorin logiikan vaatimaa ajastinta tutkitaan parhaillaan.

- AVR:n umpeen kolvatut lähdöt?!

- Vahvistus kontaktoria varten

Sarjaliikenne

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

Code Block
Wiki Markup
h3.


h3. Ryhmä



h3.

Jukka Tamminen

Tomi Koponen

Toni Niittyjoki


Joona Kujala

h3. Tehtävää

1. Hall anturin luku spi liitännän kautta  ja kirjoitus can väylään J.T.

\- komponenttiluettelo


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

\- Köykkä toimittaa kaasukahvan softan


2. CAN-ohjattu kontaktori

3. CAN-ohjattu shuntti

4. Pienoismalli purjeveneestä, langaton ohjaus TK toimittaa palikat langattomaan testaukseen

h3. SCP-1000 anturi (harjoiteltu Hall anturia varten)


AVR-DVK90CAN1 kehitysalustalla testattu VTI:n SCP1000-paineanturin lukua SPI-väylän kautta. Anturin data (paine,lämpötila) siirretty CAN-viesteihin väylälle.

Testin pohjana on käytetty VTI:n ATMEGA16L prosessorille suunnattua vapaata esimerkki c-koodia. Koodista käytettiin lähinnä oisioita SCP1000 anturin initialisointiin ja asetuksiin. Anturin DRDY-pinniä (data valmista luettavaksi) ei ole fyysisesti kytketty, vaan sen tieto luetaan suoraa anturin rekisteristä. CAN-viestit muodostetaan ATMEL:n esimerkistä opitulla tavalla.

h2. Kontaktori

Kontaktoria varten on kehitetty ohjelmaa, joka lukee can-väylää ja tottelee tietynlaisia can-viestejä. Viestit tunnistetaan tietyn datatavun sisällön ja viestin id:n perusteella. Can viestillä voidaan laittaa haluttu lähtö päälle vapaasta portista tai vaihtoehtoisesti sulkea se.

Tehtävää:


\- Kontaktorin logiikan vaatimaa ajastinta tutkitaan parhaillaan.

\- AVR:n umpeen kolvatut lähdöt?\!

\- Vahvistus kontaktoria varten

h2. Sarjaliikenne

Sarjaliikennettä on testattu Atmelin kirjastojen avulla. Alla oleva esimerkkikoodi tulostaa sarjaväylään käynnistetyn ajastimen lukemaa
{code}
#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
	}
}
{code}

h2.


h2. 

16-bit

...

ajastin

...

16-bittisen

...

ajastimen

...

käyttöönotto

...

tapahtuu

...

rekistereiden

...

avulla.

{
Code Block
}
 TCCR1B |= (1 << CS11);
{code}

Yllä

...

oleva

...

koodi

...

käynnistää

...

16bittisen

...

ajastimen

...

(Timer1)

...

asetuksella

...

"clkI/O/8

...

(From

...

prescaler)".

{
Code Block
}
 TIMSK1 |= (1 << TOIE1);
{code}

Yllä

...

oleva

...

koodi

...

sallii

...

Timer1:n

...

ylivuotokeskeytykset.

{
Code Block
}
 sei();
{code}

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);
}
{code}

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