Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Использование комплекта мастер-кит NM8036 для автоматизации

Форум самогонщиков Автоматика
1 ... 8 9 10 11 12 13 14 ... 82 11
SerjNSK Научный сотрудник Новосибирск 2.5K 939
Отв.200  28 Февр. 09, 21:51
Low1 веригуд.
то Steel. Я сначала припаял, потом увидел что зря))
SerjNSK Научный сотрудник Новосибирск 2.5K 939
Отв.201  28 Февр. 09, 21:57, через 6 мин
Rudy? а ты в чем сейчас компилишь? Давай я себе тоже скачаю.
Rudy Академик Питер 5.8K 1K
Отв.202  28 Февр. 09, 21:59, через 2 мин
Лови. Погоняй входы А2 и А3, проверь, что все нормально.

А с задержкой реакции на кнопки пока не понял. Должно быть гораздо быстрее. Но еще спокойно помотрю.

Я в IAR 4.12A/W32 (4.12.1.5)
PrcSam_hex.zip 11.4 Кб
SerjNSK Научный сотрудник Новосибирск 2.5K 939
Отв.203  28 Февр. 09, 22:10, через 11 мин
А задержки бипера нету больше. Я забыл сказать ((.
Rudy Академик Питер 5.8K 1K
Отв.204  28 Февр. 09, 22:13, через 4 мин
Стил, а ты свой алгоритм сканирования проверял на железе? На первый взгляд он не очень похож на тот, который приводит Даллас.
steel.ne Научный сотрудник Киев 541 75
Отв.205  28 Февр. 09, 22:25, через 12 мин
Работал. Я если выкладываю непроверенное, то обязательно об этом предупреждаю. Причем делал исключительно по даташиту Улыбающийся

Там же на самом деле все просто. Запрашиваем первый бит. Если ответили 01, то он ноль, если 10 - то он 1. Едем дальше. Если коллизия (00), то значит что нашли еще один датчик. В текущий датчик пишем 1, в новый 0 (или наоборот, пофиг), доопределяем первый датчик.

Потом отрабатываем уже определенный префикс второго датчика и едем по накатанной. Если что, могу на примере рассказать.
steel.ne Научный сотрудник Киев 541 75
Отв.206  28 Февр. 09, 22:32, через 8 мин
Сразу вдогонку пример Улыбающийся

три датчика
11001010
11101000
11110111

Поехали определять.
Запрос на первый бит. Ответ - 10, значит как минимум есть один датчик с 1 в первом бите (буду с единицы нумеровать).

таблица найденных датчиков выглядит так:
1: 1
2:
3:
4:

Второй запрос аналогично, в третьем коллизия. После третьего запроса таблица выглядит так (копируем уже найденный префикс и проставляем третий бит):

1: 111
2: 110
3:

Посылаем бит идентификации 1 (то есть мы выбираем датчик, с 1 в третьем бите, остальные затыкаются).
Четвертый запрос - опять коллизия.

1: 1111
2: 110
3: 1110

продолжаем с единичкой и очень просто доопределяем первый датчик без коллизий.

1: 11110111
2: 110
3: 1110

Переходим ко второму. Идентифицируем первые три бита, не обращая внимания на ответы. После этого второй датчик доопределяется без коллизий. Аналогично и с третьим
SerjNSK Научный сотрудник Новосибирск 2.5K 939
Отв.207  28 Февр. 09, 22:36, через 4 мин
АЦП А2 и А3 покрутил, работают. Пределы определяют как им и положенно от 0 до 1023.
Kotische Академик Саратов 8.1K 2.5K
Отв.208  28 Февр. 09, 22:46, через 11 мин
Да уж, намудрил ты со структурами. Смотри, что получилось после чистки.Rudy, 28 Февр. 09, 16:51
Руди, на сколько я помню, структуры были сделаны для того чтобы "развязать" обмен параметрами с компьютером, от real-time алгоритма работающего с оптотиристором.
Вроде я не успел доделать алгоритм до конца... То что я бросил в форум - это то с чем я эксперементировал, попутно обучаясь программить микроконтроллер, как ты помнишь я за это благое дело взялся совсем не давно (уже несколько лет не держал в руках микроконтроллеров, причем последний раз это был советский 80с51), а первый блин обычно сам знаешь чем... Подмигивающий
Rudy Академик Питер 5.8K 1K
Отв.209  28 Февр. 09, 22:49, через 4 мин
Да нет вроде разобрался. Вот только у тебя правильная операция есть _BV(), а я у себя такой не нашел. Прийдется ручками сделать.
Rudy Академик Питер 5.8K 1K
Отв.210  28 Февр. 09, 22:54, через 5 мин
Вроде я не успел доделать алгоритм до конца...Kotische, 28 Февр. 09, 22:46
Да нет, все отлично работает я проверил. А структуры я специально разбомбил, чтобы за длинными текстами суть не пряталась. Без них все сразу четко видно.
Kotische Академик Саратов 8.1K 2.5K
Отв.211  28 Февр. 09, 23:06, через 12 мин
Руди, вот чем мне особенно нравится Брезенхем,
что когда тебе нужно изменить мощность ТЕНа, ты подаешь в контроллер команду "установить новое заполнение" при этом нужно перезапустить окно (начать переод с начала). Так вот брезинхем, выдвая в ТЕН среднюю мощность, при произвольной перестартовке окна, даст очень маленькую погрешность в реально отдаваемой в нагрузку мощности.
Любой другой ШИМ алгоритм, потребует синхронизации команды изменения мощности с началом окна, иначе будет очень большая погрешность - реально отдаваемая мощность будет очень сильно отличаться от задаваемой.

Ты кстати смотрел, я там мудрил с длительностью и фазой подаваемого на оптотиристор поджигающего импульса?
Если твоя схема детектора перехода напряжения через нуль отличается от моей, может потребоваться подбор констант загружаемых в таймер-счётчик.
Rudy Академик Питер 5.8K 1K
Отв.212  28 Февр. 09, 23:51, через 46 мин
Если использовать ту схемку присинхронизации к сети, которую я рисовал, и использовать zero-crossing, то ничего синхронизировать не нужно. Эта схема даст прерывание в момент максимума (а не перехода через ноль) и небольшое запаздывание реакции (до, примерно, 5 мсек) не повлияет на результат. Т.е. по инту спокойно и не торопясь устанавливаешь значение для следующего полупериода. Оно автоматически сработает при переходе через ноль.

Для zero-crossing не нужен импульс. Ты просто ставишь напряжение в 0 или 1 до следующей смены значений. Реальное переключение симистора произойдет только при переходе через ноль.
ion Научный сотрудник Odessa 391 35
Отв.213  01 Марта 09, 02:06
Оно автоматически сработает при переходе через ноль.
Rudy, 28 Февр. 09, 23:51
+1
Если в момент перехода  через "0" на входе МОС будет "1".
Rudy Академик Питер 5.8K 1K
Отв.214  01 Марта 09, 17:55
Стил, разреши мои сомнения. После считывания данных с одного термометра ОБЯЗАТЕЛЬНО нужно выдать Reset, перед тем, как связываться с другим. Просто выдать MATCH_ROM для связи с другой DS18 нельзя. Т.е. я могу опрашивать только одно устройство в секунду, не чаще. Это так?

И еще. Я запустил конверсию в одной детали. Потом, через Reset хожу к другой детали. Reset не должен влиять на конверсию в первой и, спустя некоторое время, я смогу считать температуру с первой. Это так?
steel.ne Научный сотрудник Киев 541 75
Отв.215  01 Марта 09, 21:02
Стил, разреши мои сомнения. После считывания данных с одного термометра ОБЯЗАТЕЛЬНО нужно выдать Reset, перед тем, как связываться с другим. Просто выдать MATCH_ROM для связи с другой DS18 нельзя. Т.е. я могу опрашивать только одно устройство в секунду, не чаще. Это так?
Rudy, 01 Марта 09, 17:55
Конечно резет нужен. Цитирую из даташита:

The transaction sequence for accessing the DS18B20 is as follows:
       Step 1. Initialization
       Step 2. ROM Command (followed by any required data exchange)
       Step 3. DS18B20 Function Command (followed by any required data exchange)

The initialization sequence consists of a reset pulse transmitted by the bus master followed by presence pulse(s) transmitted by the slave(s).

Но откуда взялось раз в секунду? Reset pulse 450 микросекунд. И все задержки там меряются микросекундами.


И еще. Я запустил конверсию в одной детали. Потом, через Reset хожу к другой детали. Reset не должен влиять на конверсию в первой и, спустя некоторое время, я смогу считать температуру с первой. Это так?
Конечно, если нет паразитного питания.

Я у себя пользовался такой схемой опроса - всем датчикам даю команду SKIP ROM [CCh], потом CONVERT T [44h]. При этом все одновременно начинают мерять. Ожидаю 750 миллисекунд, потом считываю скретч нужных мне датчиков. При этом раз в секунду я успеваю опросить все датчики. А не по одному, как это делает, например, термкипер.

Я тебе на всякий случай прицеплю полезный даташит. В нем в таблице 3 (страница 9) указаны задержки, которые надо использовать. А на следующих страницах подробненько нарисован весь обмен.
1-wire.pdf 128.7 Кб
Rudy Академик Питер 5.8K 1K
Отв.216  01 Марта 09, 21:35, через 33 мин
Ага, спасибо. Я задержки проверил по Далласу, практически совпали с твоими. А мысль со SKIP ROM - отличная. Так и сделаю.
Но откуда взялось раз в секунду? Reset pulse 450 микросекунд.
450 - это только первая фаза, всего под 1000. Но это у меня заскок, спасибо, что дернул. Я, по невнимательности, микросекунды с миллисекундами попутал, так бы в них и считал.
Rudy Академик Питер 5.8K 1K
Отв.217  02 Марта 09, 18:41
Ну вот, добавил опрос DS18. При запуске должна показать сколько их найдено. Потом по 5 секунд показывать данные 4 АЦП (с номером кнопки в конце первой строки, как и раньше) и температуру с найденных DS18.
PrcSam_hex.zip 17.3 Кб
SerjNSK Научный сотрудник Новосибирск 2.5K 939
Отв.218  02 Марта 09, 19:27, через 46 мин
Датчик нашелся, температуру не кажет. Опрос Кнопок происходит только в момент перехода от дисплея с температурами к дисплею АЦП. Т.е. в этот момент нужно держать кнопку нажатой, иначе код ее не появится на дисплее. Артефакты еще какието, на фото видно.
DSCF2008.JPG
DSCF2008.JPG Использование комплекта мастер-кит NM8036 для автоматизации. Автоматика.
DSCF2010.JPG
DSCF2010.JPG Использование комплекта мастер-кит NM8036 для автоматизации. Автоматика.
Rudy Академик Питер 5.8K 1K
Отв.219  02 Марта 09, 19:35, через 9 мин
С кнопками все нормально, я их оставил только для контроля. А ты одну DS18 прицепил? Если есть еще, подоткни для проверки.
Такое ощущение, что считывает, но что-то не то, посмотрю.
И в конце строки странная кракозябра.