Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
et:examples:encoder:hall_encoder [2010/01/11 15:25] – tekitatud mikk.leiniet:examples:encoder:hall_encoder [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Hall'i kooder ======
 +
 +//Vajalikud teadmised: [HW] [[et:hardware:homelab:motor]], [HW] [[et:hardware:homelab:lcd]], [AVR] [[et:avr:io]], [AVR] [[et:avr:interrupts]], [AVR] [[et:avr:timers]], [LIB] [[et:software:homelab:library:module:motor]], [LIB] [[et:software:library:module:encoder]], [LIB] [[et:software:homelab:library:module:lcd_alphanumeric]], [LIB] [[et:software:homelab:library:delay]], [PRT] [[et:examples:timer:periodic_interrupt]]//
 +
 +===== Teooria =====
 +
 +Hall'i kooder on magnetiline pöördkooder mis põhineb Hall'i efektil. Hall'i efekt tekitab magnetväljas asuvas vooluga juhis pinge. See pinge on küll väike kuid seda saab võimendada. Hall'i koodris on pöörleval võllil 1 või enam magnetit mis liiguvad mööda andurist. 
 +
 +Neid on ka veel 3 sorti...
 +
 +===== Praktika =====
 +
 +<code c>
 +//
 +// Kodulabori Hall'i efektiga koodri demonstratsioon.
 +// LCD-le kuvatakse mootori reduktori pöörete arv.
 +//
 +#include <stdio.h>
 +#include <avr/interrupt.h>
 +#include <homelab/module/lcd_alpha.h>
 +#include <homelab/module/motors.h>
 +#include <homelab/module/encoders.h>
 +#include <homelab/delay.h>
 +
 +//
 +// Mootori parameetrid
 +//
 +#define TICKS_PER_TURN 3
 +#define GEAR_RATIO     47
 +
 +//
 +// Põhiprogramm
 +//
 +int main(void)
 +{
 + unsigned short rpm;
 + char text[16];
 + 
 + // LCD ekraani seadistamine
 + lcd_alpha_init(LCD_ALPHA_DISP_ON);
 + 
 + // LCD ekraani puhastamine
 + lcd_alpha_clear();
 + 
 + // Programmi nimi
 + lcd_alpha_write_string("Enkooder");
 +
 + // Mootori 0 seadistamine
 + dcmotor_init(0);
 +
 + // Koodri 0 seadistamine
 + encoder_init(0);
 +
 + // Mootori käivitamine
 + dcmotor_drive(0, 1);
 +
 + // Globaalne katkestuste lubane (koodri pärast)
 + sei();
 + 
 + // Lõputu tsükkel
 + while (true)
 + {
 + // Reduktori võlli rpm leidmine
 + rpm = encoder_get_rpm(0) / TICKS_PER_TURN / GEAR_RATIO;
 +
 + // rpm teisendamine tekstiks
 + sprintf(text, "%d rpm   ", rpm);
 + 
 + // Teksti kuvamine LCD teise rea alguses
 + lcd_alpha_goto_xy(0, 1);
 + lcd_alpha_write_string(text);
 + 
 + // Paus 500 millisekundit
 + sw_delay_ms(500);
 + }
 +}
 +</code>
 +
  
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0