СХЕМА.RU - Радиолюбительский портал » Материалы за Ноябрь 2013 года


 Использование Энкодера

29-11-2013, 14:59 Cмотрели: 552
Есть энкодер с мышки как подключить его что бы при прокручиванию в одну сторону замыкались одни контакты, а при прокручиванию в другую совсем другие. Я думаю вы поняли о чем я



Использование Энкодера
Раздел: Начинающим


 Помогите Найти Ошибку В Коде

29-11-2013, 14:59 Cмотрели: 911
Написал небольшой код для Atmega16, который должен считать импульсы с T1. Код не работает, проблема в зациклевинии while функции Mesure, как выйти из этой ситуации не соображу. В программировании под МК новичок, так что сильно не пинайте.




#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <stdlib.h>
#include <stdio.h>
#include "n3310.h"
#include "picture.h"
typedef _Bool bool;
#define false 0
#define true 1
//---------------Глобальные переменные--------------
double Value;
double f1,f2,f3;
char Buffer[200];
unsigned long CountLow = 0;
unsigned long CountHigh = 0;
unsigned long Count = 0;
unsigned long CountT0 = 0;
unsigned long Test = 0;
bool StatusCount = false;
//-------Обработка прерывания на переполнение счетчика T0-------
ISR(TIMER0_OVF_vect)
{
if(CountT0 >= 62500) // Через 1 секунду
{
TCCR1B = 0; // Выключить счётчик T1
TCCR0 = 0; // Выключить счетчик T0
CountLow = TCNT1;
Count = CountLow + (CountHigh << 16);
StatusCount = true;
}
CountT0++;
}
//-------Обработка прерывания на совпадение счетчика T1-------
ISR(TIMER1_COMPA_vect)
{
CountHigh++;
}
//------------Инициализация счетчиков---------------
void TIMER_Init(void)
{
//------Настройка счётчика T1 (подсчет импульсов)----------
TIMSK |= (1<<OCIE1A); // Совпадение TCNT1 и OCR1A
OCR1A = 65535; // Значение для сравнения 0xffff
TCCR1B = 0; // Выключить счетчик

//------Настройка счётчика T0 (подсчет времени)------------
TIMSK |= (1<<TOIE0); // Прерывание по переполнению
TCCR0 = 0; // Выключить счетчик
}
unsigned long Mesure(void)
{
CountHigh = 0; // Инкремент по переполнению счетчика T1 (65535)
CountT0 = 0; // Инкремент по переполнению счетчика T0 (256)
TCNT1 = 0; // Счетчик T1 в ноль
TCNT0 = 0; // Счетчик T0 в ноль
TCCR1B |= TCCR1B = (1<<CS12)|(1<<CS11)|(1<<CS10); // Внешнее тактирование по выводу T1
TCCR0 |= (1<<CS00)|(0<<CS01)|(0<<CS02); // Делитель счетчика T0
while(!StatusCount); // Не выходит из цикла
return Count;
}
int main(void)
{
TIMER_Init();
LcdInit();
asm("sei"); // Разрешить внешние прерывания

StatusCount = false;

Test = Mesure(); // Тут зависает

LcdClear();
LcdGotoXYFont(1,1);
dtostrf(Test, 0, 2, Buffer);
LcdStr(1,Buffer);
LcdUpdate();
_delay_ms(2000);
while(1)
{
}
}

Раздел: AVR


 Программный Uart

29-11-2013, 14:59 Cмотрели: 640
Вобщем понадобилось мне организовать программный уарт на 13 тиньке, из всего уарта мне требуется всего лишь приёмная часть. Но какие то проблемы, связанные толи с таймером толи с кодом.




#define TIME_BIT (0xff - (F_CPU/(4800*3*8)))
struct _flags
{
uint8_t start_bit:4;
uint8_t next_bit:4;
};
static volatile struct _flags flags = {0,0};

ISR(INT0_vect)
{
flags.start_bit = 1;
}
ISR(TIM0_COMPA_vect)
{
flags.next_bit = 1;
}
void inline clock_next_bit()
{
while(!flags.next_bit);
flags.next_bit = 0;
}
void inline wait_start_receive()
{
while(!flags.start_bit);
flags.start_bit = 0;
}
uint8_t uart_receive()
{
sbi(MCUCR,ISC01); //прерывание по спадающему фронту
sbi(GIMSK,INT0); // разрешение прерывания по событию на пине
wait_start_receive();
cbi(GIMSK,INT0); // вырубаем ненужное прерывание
TCCR0A |= (1 << WGM01); //сброс счётчика по совпадению
TCCR0B |= (1 << CS01); //предделитель счётчика 8
TIMSK0 |= (1 << OCIE0A); //прерывания по сравнению
OCR0A = TIME_BIT;
clock_next_bit(); //даём смещение в пол такта
uint8_t data = 0;
PORTB ^= (1 << PB2); //начало приёма
for (uint8_t i = 0;i < 8; ++i)
{
clock_next_bit();
if (bit_is_set(PINB,PB1))
{
data |= 1 << i;
}
}
TCNT0 = 0;
TCCR0B = 0x00;
PORTB ^= (1 << PB2); // конец приёма
return data;
}



расчётное время выходит больше чем длится посылка в протеусе.
Раздел: AVR


 Посоветуйте Какой Поставить Симистор

29-11-2013, 14:59 Cмотрели: 479
Здравствуйте! Подскажите пожалуйста марку симистора, для установку в данной схеме. Главное требование, либо с изолированными электродами, либо с электродом А1 на корпусе, для крепления без изоляционных пракладок к радиатору который сидит на массе. Ток 10А, напряжение 100 вольт. Спасибо.

[img=http://www.image123.net/thumbs/20131128/y2q56abptopl.jpg]
Раздел: Начинающим


 Помогите С Кодом Индикатора Положения Рычага Переключения Передач

29-11-2013, 14:59 Cмотрели: 559
Написал программу индкации передачи МКПП на attiny2313 в BASCOM-AVR:


$regfile = "attiny2313.dat"
$crystal = 8000000
Config Portd = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Pinb.5 = Input
Do
If Pinb.0 = 0 Then
Portd = &H01
Waitms 10
Portd = &H02
Waitms 10
Portd = &H04
Waitms 10
Portd = &H08
Waitms 10
Portd = &H10
Waitms 10
Portd = &H30
Waitms 10
Portd = &H31
Waitms 10
Portd = &H33
Waitms 200
Portd = &H23
Waitms 10
Portd = &H03
Waitms 10
Portd = &H2
Waitms 10
Portd = &H00
Waitms 50
Portd = &H01
Waitms 10
Portd = &H40
Waitms 10
Portd = &H08
Waitms 10
Portd = &H00
Waitms 50
Portd = &H01
Waitms 10
Portd = &H40
Waitms 10
Portd = &H08
Waitms 10
Portd = &H00
Waitms 50
Portd = &H01
Waitms 10
Portd = &H40
Waitms 10
Portd = &H08
Waitms 10
End If
If Pinb = &B111111 Then
Portd = &H01
Waitms 10
Portd = &H02
Waitms 10
Portd = &H04
Waitms 10
Portd = &H08
Waitms 10
Portd = &H10
Waitms 10
Portd = &H20
Waitms 10
End If
If Pinb.1 = 0 Then
Portd = &H01
Waitms 10
Portd = &H02
Waitms 10
Portd = &H06
Waitms 50
End If
If Pinb.2 = 0 Then
Portd = &H01
Waitms 10
Portd = &H03
Waitms 10
Portd = &H43
Waitms 10
Portd = &H53
Waitms 10
Portd = &H5B
Waitms 10
End If
If Pinb.3 = 0 Then
Portd = &H01
Waitms 10
Portd = &H03
Waitms 10
Portd = &H47
Waitms 10
Portd = &H4F
End If
If Pinb.4 = 0 Then
Portd = &H01
Waitms 10
Portd = &H01
Waitms 10
Portd = &H02
Waitms 10
Portd = &H06
Waitms 10
Portd = &H46
Waitms 10
Portd = &H66
Waitms 10
End If
Loop
End



как сделать так, чтобы анимация передач, кроме нейтрали, заднего хода не повторялась(анимированно появлялась цифра и замирала)?

прилагаю проект в Proteus и прошивку

Прикрепленный файл
 Desktop.zip   15,33 Кб
  4 раз скачано



такие схемы я уже встречал, только у них нет исходников. а я хочу еще добавить туда: положение ручника, открытые двери
Раздел: МК для начинающих


 На Чем Сделать Унч На 2Ohm?

29-11-2013, 14:59 Cмотрели: 698
Есть 2 динамика, LADA AS-12F, номинальная мощьность заявлена как 250W, но таких мощьностей взять неоткуда поэтому хочу соединить паралельно.

Какую микросхему можно взять для усилителя, чтобы работала на 2 ома и получить что-то более менее подходящее?
Раздел: Песочница или Вопрос-Ответ


 Очень Нужна Распиновка На Разъем Dc-044

29-11-2013, 14:59 Cмотрели: 715
Здравствуйте. Нужна распиновка разъема питания DC-044. Самого разъема у меня еще нет, но печатную плату уже нужно сделать. Есть картинка с сайта поставщика, на которой показан сам разъем и его  схематическое изображение, но я его не совсем понимаю. Прошу пояснить. C14114.jpg
  Если у кого нибудь есть такой разъем под рукой сделайте пожалуйста прозвонку и расскажите о результатах.
Раздел: Песочница или Вопрос-Ответ


 Как Вернуть К Жизни Неудачно Перепрошитый Девайс

29-11-2013, 14:59 Cмотрели: 685
Здравствуйте!



Товарищи, прошу прощения, если ошибся адресом - я полный дилетант, радиоэлектроникой занимаюсь исключительно на уровне "пользователя", но вот черт дернул попытаться сделать хорошую жизнь еще лучше - попытался перепрошить авиамодельную радиоаппаратуру (пульт) Turnigy 9x прошивкой ER9x.



Как вы, наверняка, догадались, ничем хорошим это не кончилось - аппаратура после моего вмешательства не подает признаков жизни, не включается, не перепрошивается.



Действовал я вот по этим видеоинструкциям:



Установка кабеля/разъема для перепрошивки в пульт:





Непосредственно перепрошивка с помощью USBAsp и программы eePee:





У меня все точно так же (перепроверено 10 раз) - вот только у автора все прошло гладко, а у меня программа выдала ошибку:



Как Вернуть К Жизни Неудачно Перепрошитый Девайс



И далее, как я уже сказал, аппаратура не работает, а на последующие попытки что-либо сделать в eePe получаю вот такой ответ:



Как Вернуть К Жизни Неудачно Перепрошитый Девайс



Подскажите, пожалуйста, как починить аппаратуру? Подлежит ли она вообще ремонту? Как быть? Что делать?



Спасибо заранее!
Раздел: AVR


 Расчёт Транзисторного Усилителя Мощности По Правилам Киргхофа

29-11-2013, 14:59 Cмотрели: 579
Дали задание: рассчитать значения резисторов в цепи с R14 по R18. Как правильно составить уравнения с учётом влияния полевого транзистора и питающих напряжений: -5 В (1) и 70 В (3)?

Максимальное напряжение Uси для VT2: 18 В в рабочем режиме.

Емкость керамических конденсаторов для разделения каскадов С48 и С57  = 34 мкФ (рабочая частота 4700), С45 - С47 и С49 - С51 = 180 пФ, 10 нФ и 0,1 мкФ соответственно. L1,2 = 34 нГн.

Расчёт Транзисторного Усилителя Мощности По Правилам Киргхофа
Раздел: Школьникам и студентам


 Velodyne Cht 8 Уходит В Защиту

29-11-2013, 14:59 Cмотрели: 653
Саб Velodyne CHT 8 уходит в защиту произвольно. Сейчас почти всегда в защите даже при отключенном динамике и термисторе.

Микруха UPC1237HA



При включении греется диод D806, 803-802 и довольно сильно резистор R501 1Вт . Также на холостом ходу греются Q801-Q802 в стабилизаторе питания (Q802 сильнее).

Интересно что, если саб не пашет, то нужно нагреть термистор пока реле не сработает и саб включается... С термистором все ок, 90-95 кОм.

Наблюдается слабый гул похожий на 50 Гц, менять конденсаторы на фильтре? или оно "пробивается" через D806-R607 ?

Кто что думает?



UPD греться начинают при включении реле, т.е. в рабочем режиме

Прикрепленные файлы:




Раздел: Аудиоаппаратура




Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Ноябрь 2013    »
ПнВтСрЧтПтСбВс
 123
45678910
11121314151617
18192021222324
252627282930