Хоровиц Хилл Искусство схемотехники.

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
rl55
Друг Кота
Сообщения: 16450
Зарегистрирован: Ср фев 13, 2013 21:59:40

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение rl55 »

Расчет правильный.
По расчету у вас конденсатор 1 мкФ - проверьте,какой вы используете.
Может вы неправильно определили период?

И чем вы вообще измеряете?
АндрейАвербах
Потрогал лапой паяльник
Сообщения: 345
Зарегистрирован: Пт авг 24, 2012 09:45:40
Откуда: Абакан, Хакасия

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение АндрейАвербах »

Кондер у меня 1мкф, на нем написано 105, т.е 1000000пф=1000нф=1мкф.
Измеряю, ноутбуком, через вход микрофона, Oscilloscope 2.51.
Про период не знаю.
rl55
Друг Кота
Сообщения: 16450
Зарегистрирован: Ср фев 13, 2013 21:59:40

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение rl55 »

Скорее у вас перегружен вход и сигнал ограничивается.Сигнал у вас скорее несколько вольт,а это очень много для микрофонного входа.Надо его уменьшить делителем до 1-10 мВ,где-то в 1000-100 раз.Например, нижний резистор 1 кОм, верхний - 100 кОм-1 МОм.
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение blackx »

АндрейАвербах писал(а):Ладно, мучаем Attiny13a далее...


Ага, и нас в том числе :)))
АндрейАвербах, не привыкайте задавать так много вопросов. Лучше сначала всегда пытаться разобраться самому (даже если на это уходит несколько дней - не все сразу). По поводу AVR - почитайте курс на easyelectronics.ru, там вполне все доходчиво написано.

Если уж на то пошло, то задавайте вопросы по AVR в соответствующем разделе форума.

1. Прошивка микроконтроллера AVR очень зависит от того, какой программатор используется. Самая популярная программа для прошивки, по моему, это avrdude. Можно прошивать и из студии, используя, например, такой программатор.

2. Си весьма сложный язык для новичка. Лучше читайте отдельно книгу, иначе потом не разберетесь вообще. Самая популярная книга (и, наверное, самая полезная) - "Язык программирования C". Б. Керниган, Д. Ритчи // Пер. с англ. - 304 с.

3. Для симулятора и программатора должен быть один и тот же hex-файл. Да, hex-файл так и должен выглядеть. Этот формат называется Intel HEX. Есть еще, например, COFF и ELF. Про протеус не знаю, никогда не пользовался.
Изображение only pure true norwegian blackx Изображение
АндрейАвербах
Потрогал лапой паяльник
Сообщения: 345
Зарегистрирован: Пт авг 24, 2012 09:45:40
Откуда: Абакан, Хакасия

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение АндрейАвербах »

blackx,
Ну, опыт программирования у меня уже есть. Только не на C. На бэйсике. Обучался (лучше сказать самообучался) я по книге "Программирование для чайников". По-моему так называется, не помню уже. И там приводились в параллель несколько языков: бэйсик, ассемблер, си,си++ и т.д.
Оттуда я и узнал, что программа на си должна начинаться со слова main и заключаться в фигурные скобки.
Книжку почитаю.
rl55,
слушайте, вообще класс! все работает, на один канал сделал, хочу на второй, вот схема и осциллограмма, экспоненту видно!! :)) :)) :))
Изображение
Эх, вот так когда что-то получается думаешь: как хорошо на свете то жить.
Экспонента мигает, красота!


blackx, начал я читать эту книжку, написал первую прогу, писал в программе Dev-C++, написал, скомпилировал, открываю, черное окошко появилось и пропало, я знаю, что так и должно быть, но как мне сделать так, чтоб оно каждый раз не пропадало, для каждого файла батник писать?
Вот код проги.
#include <stdio.h>
main()
{
printf( "Hello world" );

}

rl55, вот сделал делитель на второй канал, вот что получилось.
Изображение
Зеленый до кондера, желтый - после. Кондер 1 мкф.
Оцените, пожалуйста.

Изменяя частоту, проверил, что это вч фильтр. ВЧ пропускает нормально, не ослабляет.
rl55
Друг Кота
Сообщения: 16450
Зарегистрирован: Ср фев 13, 2013 21:59:40

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение rl55 »

АндрейАвербах, замечание по поводу делителя - он у вас слишком низкоомный. Будет шунтировать измеряемую цепь.Я вам рекомендовал ранее верхний резистор 100 кОм-1 МОм.

По поводу нижней картинки - не совсем понял,о какой цепи речь идет.Зеленая осциллограмма соответствует дифференцированию.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение КРАМ »

rl55 писал(а):Будет шунтировать измеряемую цепь

По поводу нижней картинки - не совсем понял

Полагаю, что это входной сигнал... :)
АндрейАвербах
Потрогал лапой паяльник
Сообщения: 345
Зарегистрирован: Пт авг 24, 2012 09:45:40
Откуда: Абакан, Хакасия

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение АндрейАвербах »

rl55, т.е. вы хотите чтоб верхний резюк у меня был 1 Мом, а нижний 10 ом :))
Просто мне сейчас прямо проблематично найти резистор 1 Мом, тем более два. :)
По поводу нижней картинки вы все правильно поняли, диффцепь с кондера 1 мкф и переменным резюком 6k8.

Поставил верхний резистор 470 Ком, нижний 470 Ом, вот результат.
Изображение
Сигнал сильно зашумлен из-за большого усиления на экране, напряжение на выходе равно
470000/470=1000 раз
т.е. напряжение выходное в 1000 раз меньше входного, нет, лучше я оставлю как было. А в субботу куплю резисторы 1 Мом и 10Ком.
На них и построю.
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение blackx »

АндрейАвербах, если программа успешно скомпилировалась, то да, все верно. Попробуйте вот так:

Код: Выделить всё

#include <stdio.h>

int main()
{
    printf("Hello world");

    getchar();

    return 0;
}


Тогда программа будет завершаться только после ввода символа (любого) в консоли.
Изображение only pure true norwegian blackx Изображение
rl55
Друг Кота
Сообщения: 16450
Зарегистрирован: Ср фев 13, 2013 21:59:40

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение rl55 »

АндрейАвербах, коэффициент деления нужно выбирать таким,чтобы сигнал на выходе делителя был достаточно большим,но в то же время недостаточным для перегрузки микрофонного усилителя.
Сделайте 100:1 или 50:1 с достаточно высокоомным верхним резистором.Иначе низкоомный резистор будет влиять на результаты ваших экспериментов и дополнительно сбивать вас с толку.
Проверять хорошо на синусоиде - при чрезмерном сигнале верхушки синусоиды подрезаются.
Кроме того,высокоомный делитель более чувствителен к помехам,а вы,наверное, подключаете его выход неэкранированным проводом.
В этом случае делитель должен находиться в непосредственной близости от микрофонного гнезда и уже не очень длинными проводами подключаться к схеме.
АндрейАвербах писал(а):Просто мне сейчас прямо проблематично найти резистор 1 Мом, тем более два.
Не обязательно 1 МОм.Любой от 100 кОм и выше.Нижний резистор в 50-100 раз меньший.
И что,у вас не с чего снять резисторы,нет никаких плат негодных?Для экспериментов самое то.
АндрейАвербах
Потрогал лапой паяльник
Сообщения: 345
Зарегистрирован: Пт авг 24, 2012 09:45:40
Откуда: Абакан, Хакасия

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение АндрейАвербах »

blackx, начал читать курс по АВР на изиэлектроникс. Добрался до пункта Простейшая программа.
И не понимаю простого факта. Я написал такую программу
.include "tn13Adef.inc";
;=Start macro.inc=======

; Тут будут наши макросы, потом.

;=End macro.inc=========

; Ram===================

.DSEG ; Сегмент ОЗУ

; FLASH=================

.CSEG ; Сегмент кода
NOP
NOP
NOP

; EEPROM================

.ESEG ; Сегмент EEPROM

У меня Atmel Studio 6.0
Когда я компилирую ее и смотрю флэш память получается вот что

prog 0x0000 00 00 ..
prog 0x0002 00 00 ..
prog 0x0004 00 00 ..
prog 0x0006 ff ff яя
prog 0x0008 ff ff яя
prog 0x000A ff ff яя
prog 0x000C ff ff яя
prog 0x000E ff ff яя
prog 0x0010 ff ff яя
prog 0x0012 ff ff яя
prog 0x0014 ff ff яя
prog 0x0016 ff ff яя
prog 0x0018 ff ff яя

Такое ощущение, что адреса тут перескакивают через один. Но в общем все верно.
В примере автор использовал Atmel Studio 4
У него получилось

http://easyelectronics.ru/img/AVR_kurs/new/ak4.gif

Тут адреса идут последовательно. с чем связано такое поведение адресов? С разными версиями? Или с тем, что у автора мега16 а у меня тини13а?

И почему-то не выполняется команда JMP. Т.е. я прописываю

; FLASH=================

.CSEG ; Сегмент кода
NOP
NOP
NOP
JMP 0

А во флэшэ

prog 0x0000 00 00 ..
prog 0x0002 00 00 ..
prog 0x0004 00 00 ..
prog 0x0006 ff ff яя
prog 0x0008 ff ff яя
prog 0x000A ff ff яя
prog 0x000C ff ff яя
prog 0x000E ff ff яя
prog 0x0010 ff ff яя
prog 0x0012 ff ff яя
prog 0x0014 ff ff яя
prog 0x0016 ff ff яя
prog 0x0018 ff ff яя


Нету этой команды.
У автора
http://easyelectronics.ru/img/AVR_kurs/new/ak6.gif
Вот так, хотя в принципе, если моделировать по шагам и смотреть на Program Counter то все правильно получается.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение КРАМ »

Команды имеют двухбайтную длину, в отличии от данных. Но нумерация у команд побайтная, поэтому и номера только четные.
если же размещать константы во флеше программ, то есть байтное чтение и тогда нумерация идет подряд.
АндрейАвербах
Потрогал лапой паяльник
Сообщения: 345
Зарегистрирован: Пт авг 24, 2012 09:45:40
Откуда: Абакан, Хакасия

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение АндрейАвербах »

Доброго времени суток, это снова я.
Вопрос:
Есть программа для тини13а

.include <tn13Adef.inc>
.DSEG
.CSEG
.org 0 ;адрес начала 0x0000
ldi R16, 0b110011
ldi R17, 0b000001
sts 0x37, R16
sts 0x38, R17

Когда запускаю, все компилится, отлаживается, но потом, когда я смотрю в порты, у меня там неувязочка происходит.
Изображение
Почему с порта0 читается единица, когда сам порт0 настроен на вывод? С него вообще невозможно ничего читать, если он настроен на вывод. Судя по нашей обучалке и по курсу на изиэлектроникс это так.

Еще вопросы.
Как сделать RESET портом ввода-вывода на той же Attiny13a?
Как разбить содержимое регистра на отдельные БИТЫ?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение КРАМ »

Вход (цифровой) с пина отключается только при настройке этого пина как аналоговый вход. И только для того, чтобы на первом входном вентиле исключить сквозные токи.
В остальных случаях вход ВСЕГДА подключен.
Только при чтении с пина нужно различать чтение с самого пина и чтение с ВЫХОДНОЙ ЗАЩЕЛКИ, т.е. с выходного регистра. Это важно при отключении выхода (третьем состоянии). Читай даташит.
Содержимое регистра разбивается на отдельные биты БИТНЫМИ операциями по управлению и проверке на состояние. Кроме того, можно выделить бит ЛОГИЧЕСКИМИ операциями и состоянием бита Z в регистре состояния МК.
АндрейАвербах
Потрогал лапой паяльник
Сообщения: 345
Зарегистрирован: Пт авг 24, 2012 09:45:40
Откуда: Абакан, Хакасия

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение АндрейАвербах »

Что значит Sink Current (Слив потока) в даташите на тини13а?
Дальше, расчет резистора для светодиода.
Допустим, к PB0 прикошачен светодиод анодом к порту, катодом в землю. Известно, что падение напряжения на светодиоде равно 1.5 вольта.
Далее по графику с названием Figure 19-28.VOH: I/O Pin Output Voltage vs. Source Current (Low Power Pins, VCC= 3V) определяем, что при токе 10 мА напряжение на PB0 равно 2.5 вольта.
Находим падение напряжения на резисторе 2,5-1,5=1,0 вольт
ток 10 мА, резистор равен 1/0,01=100 Ом
Ответ: резистор равен 100 Ом

Так?

Дальше, начал изучать прерывания.
Но в тини13а нет USART. Сколько я ни копался ничего про это не нашел, а автор показывает пример именно на USART. Я думаю чем можно заменить USART при изучении. Хотел заменить RESET'ом, там RESET уже используется для перехода на основную программу.
С другой переферией практически не знаком.
Вот программа у автора
Reset: LDI R16,Low(RAMEND) ; Инициализация стека
OUT SPL,R16 ; Обязательно!!!

LDI R16,High(RAMEND)
OUT SPH,R16

SEI ; Разрешаем прерывания глобально
LDI R17,(1<<RXCIE) ; Разрешаем прерывания по приему байта
OUT UCSRB,R17

M1: NOP
NOP
NOP
NOP
RJMP M1

Что в ней значит строчка LDI R17,(1<<RXCIE)? Можно ли применить эту же строчку для прерывания по переполнению таймера/каунтера 0?
Если нет, то какую строчку надо применить?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение Gudd-Head »

АндрейАвербах, в глаза долбимся? Название темы ничего не говорит?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение BeerserkN1 »

Из книги "Искусство схемотехники" задачи. Прошу помощи в решении.
1)Докажите, что время нарастания
сигнала (время, в течение которого сигнал изменяется
от 10 до 90% своего максимального значения)
составляет 2,2 RC.
2)Для схемы, показанной на
рис. 1.34, R1= R2 = Ю кОм и С = 0,1 мкФ.
Определите U(t) и изобразите полученную зависимость в виде
графика.
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение blackx »

Ну там же формула прямо под носом, решение элементарно >_<

U=Aexp(-t/RC)

U/A = exp(-t/RC)

-t/RC = ln(U/A)

t = -RCln(U/A)

t10 = -RCln(1 - 0.1) = 0.10536051565RC
t90 = -RCln(1 - 0.9) = 2.30258509299RC

dt = 2.30258509299RC - 0.10536051565RC = 2.19722457734RC

А по второму, вы бы хоть не поленились рисунок прикрепить.

Видим делитель напряжения на входе. Вспоминаем про эквивалентное последовательное сопротивление откуда-то из начала книжки:

R = Uхх/Iкз = (0.5Uвх)/(Uвх/R1) = 0.5R1 = 5 кОм.

Далее, все по той же формуле, изображенной под носом, U = Uвх + Aexp(-t/RC).

После нехитных преобразований с использованием начальных условий получаем

U = Uвх(1-exp(-t/RC)).

R известно, C - известно, график стройте сами.
Изображение only pure true norwegian blackx Изображение
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение BeerserkN1 »

blackx писал(а):Ну там же формула прямо под носом, решение элементарно >_<

В принципе, изначально, всё было понятно. Просто ввиду невнимательности меня немного сбили с толку промежутки интегрирования в уравнении, которое идёт далее. Я думал, что решать эту задачу нужно с помощью него. Поэтому я и застопорился, но потом осознал всю простоту решения. А вот вторую задачу я решил, просто записал условие по ошибке. Но тем не менее, большое вам спасибо за оказание помощи.
Вообще, книга "искусство схемотехники" очень интересная. Постараюсь и дальше изучать по ней схемотехнику.
BeerserkN1
Родился
Сообщения: 12
Зарегистрирован: Вс май 19, 2013 10:00:58

Re: Хоровиц Хилл Искусство схемотехники. Объясните!

Сообщение BeerserkN1 »

Решил следующую задачу: Докажите, что если А = ВС, то
А = ВС, где А, В, С-амплитуды комплексных чисел.
Подсказка: представьте каждое комплексное число
в форме А = Ае^jw .

Решение:
Комплексной амплитудой является следующее выражение: А = Ае^jw.
Возьмём произвольно два числа в показательной форме.
B=5e^j50 градусов, C=5e^j60 градусов. Перемножим их по правилу перемножения комплексных чисел в показательной форме:
Изображение
Перемножим числа: 5e^j50*5e^j60=25e^j110. Переведём в алгебраическую форму записи (25*cos(110)+j*25*sin(110))= -8.55+23.492j

Теперь пойдём другим путём. Перемножим непосредственно числа в алгебраической форме (переведя их естественно в эту форму)
5e^j50=5*cos(50)+j*5*sin(50)=3.214+j3.83

5e^j60=5*cos(60)+j*5*sin(60)=2.5+j4.33

Теперь перемножим их
(3.214+j3.83)*(2.5+j4.33)=-8.55+23.492j.
Числа в первом и втором варианте получились одинаковыми

Верны ли мои рассуждения?
Ответить

Вернуться в «Теория»