MetkuMods

Kuinka pääset alkuun mikrokontrollereiden kanssa - Osa 2.

Kommunikointi tietokoneen kanssa, moottorien ohjaus, servot jne.
 
Kirjoittaja: Aki Korhonen
Julkaistu: 06.05.2009
In English In English
Suomeksi Suomeksi

Esimerkki 2.1 - Moottorit

Opittava asia: laitteiden kytkeminen päälle ja pois, jotka tarvitsevat isomman jännitteen ja/tai virran kuin mitä mikrokontrollerin pinnistä voi saada.

Koodi on periaatteessa sama kuin artikkelin ensimmäisen osan lediesimerkki. Muutamat nimet on vaan vaihdettu ja painonappi toimii nyt niin, että kerran painettaessa moottori jää päälle ja toisella painalluksella sammuu jne. Kytkennässä ei ole mitään kovin erikoista, normaali transistorin käyttö kytkimenä suurempien kuormien ohjailuun.

Osalista:
  • ATiny45
  • 100 nF kondensaattori
  • Painonappi
  • 10k ohmin vastus
  • BD675 NPN-transistori (tai vastaava, jossa on tarpeeksi kestoa moottoria varten)
  • 1N4007 diodi (tai vastaava)
  • Moottori tai tuuletin, jota ohjaillaan tässä esimerkissä 12 voltilla
 

How to get started with microcontrollers - Part 2
Esimerkki 2.1

 

How to get started with microcontrollers - Part 2
Esimerkki 2.1


/**
* MetkuMods - http://metku.net/
* Kuinka pääset alkuun mikrokontrollereiden kanssa - Osa 2
* Esimerkki 2.1 - Moottorit
*
* Tekijä: Aki Korhonen
* Pvm: 2009-04-29
*/

// Mikäli kellotaajutta ei ole projektiasetuksissa laitettuna, niin laitetaan tässä
#ifndef F_CPU
	#define F_CPU 1000000UL // 1 MHz
#endif

#include <avr/io.h>
#include <util/delay.h>

// Moottori pinnissä PB4 (pinni 3 piirissä)
#define MOTORPIN 4

// Painiket kytkettynä pinniin PB3 (pinni 2 piirissä)
#define BTNPIN 3

int main(void)
{
	DDRB = 0x17; // PB3 sisään, muut ulos (0x1F-0x08=0x17 or 31-8=23)
	PORTB = 0x08; // Aktivoi sisäinen ylösvetovastus pinnissä PB3 ja aseta muut alas

	uint8_t buttonPressed = 0;
	
	while(1)
	{
		// Tarkista mikäli PB3 on alhaalla (painike kytkee sen maahan)
		// PB3 on normaalisti ylhäällä (1)
		
		if(bit_is_clear(PINB, BTNPIN) && buttonPressed == 0)
		{
			buttonPressed = 1;

			if(bit_is_clear(PINB, MOTORPIN))
				PORTB |= _BV(MOTORPIN); // Moottori päälle
			else
				PORTB &= ~(_BV(MOTORPIN)); // Moottori pois päältä
			
			_delay_ms(100);
		}
		else if(!bit_is_clear(PINB, BTNPIN) && buttonPressed == 1)
		{
			buttonPressed = 0;
		}
	}
	
	return 0;
}






Sivut:  1 2 3 4 5 6 


 
  Content in english!
  Sisältö suomeksi!

 Google




Add to Technorati Favorites
add
add
add
add
add

 .:Back to top Bandwidth by Mpoli

Copyright © Metku.net, All Rights Reserved.
All content and graphics in MetkuMods are sole property of Jani Pönkkö and may not be reproduced or copied in any manner without written permission from him.
All brand names, trademarks and copyrights are the property of their respective owners.Privacy Policy