Например TDA7294

Форум РадиоКот • Просмотр темы - DS18B20 в паре с STM32F103C8
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс май 16, 2021 12:32:42

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 29 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 15:20:00 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 131
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3127
Рейтинг сообщения: 0
Мурик писал(а):
USART занят под другие нужды.
В F103C8 3 USART. Все заняты?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 15:44:10 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
на 100 датчиков понадобится 100 преобразователей CAN<->интерфейс датчика. Получится слишком дорого и громоздко.

Если датчики так далеко, что для связи придется CAN-шину использовать, то 1-wire здесь однозначно сядет в лужу! Либо вам придется активировать не одну, а две ноги МК для 1-wire: одну на прием, а вторую — через более-менее мощный транзистор — на передачу. Абы DS18 смогли подтяжку в сотню Ом пересилить… Но как бороться с шумами на километровой шине 1-wire, я вообще не представляю!
Добавлено after 1 minute 21 second:
USART занят под другие нужды. Ну и да, вопрос не об этом.

Таймер + DMA, понадобится задействовать лишь одну ногу, один канал DMA да один таймер с compare/capture.

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 16:27:57 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 131
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3127
Рейтинг сообщения: 0
Eddy_Em писал(а):
Если датчики так далеко, что для связи придется CAN-шину использовать, то 1-wire здесь однозначно сядет в лужу!
Не поверите, 1Wire нормально работает.

Eddy_Em писал(а):
Либо вам придется активировать не одну, а две ноги МК для 1-wire: одну на прием, а вторую — через более-менее мощный транзистор — на передачу.
Ясень пень линия 1Wire подключена не на прямую к МК (это ненадежно при длинной линии), а через спец. адаптер.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 17:22:45 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
через спец. адаптер.

И каждый датчик — через спец. адаптер. Круто.
Кроме того, я не встречал DS18 в нормальном формфакторе — чтобы его можно было на что-то наклеить. Т.е. он годится лишь чтобы его в гильзу запихнуть и с точностью +=слон измерять температуру газа (ну или с чуть лучшей точностью — температуру жидкости).

Что ж за задачи такие могут возникнуть, чтобы с точностью ±2°C нужно было измерять в сотне точек температуру воздуха, либо с точностью ±0.5°C — температуру жидкости? Бред какой-то.

Кстати, если такие задачи и возникнут вдруг, то можно взять 10-рублевый китайский МК (что у них там сейчас популярно — ch552?), к нему 5-рублевый преобразователь уровней для RS-485, обвязки еще на 5 рублей и рублевый терморезистор. Еще рублей 10 будет стоить печатная плата. Пайка - ну, рублей 20.
В общем, получается, что за стоимость идиотского DS18 мы получили вменяемый термодатчик с такой же паршивой точностью, но более удобным формфактором датчика + работающий на RS-485!!!

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 19:54:24 
Друг Кота
Аватар пользователя

Карма: 3
Рейтинг сообщений: 131
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3127
Рейтинг сообщения: 2
Eddy_Em писал(а):
И каждый датчик — через спец. адаптер.
Где я такое написал? Он общий для всех датчиков.

Eddy_Em писал(а):
Что ж за задачи такие могут возникнуть, чтобы с точностью ±2°C нужно было измерять в сотне точек температуру воздуха, либо с точностью ±0.5°C — температуру жидкости?
Контроль за выходом температуры за допустимые пределы.

Eddy_Em писал(а):
Кстати, если такие задачи и возникнут вдруг, то можно взять 10-рублевый китайский МК (что у них там сейчас популярно — ch552?), к нему 5-рублевый преобразователь уровней для RS-485, обвязки еще на 5 рублей и рублевый терморезистор. Еще рублей 10 будет стоить печатная плата. Пайка - ну, рублей 20.
У вас так дешево. :shock: Может придете в нашу фирму и будете выполнять работу по такой цене? :))) Думаю вам рублей 500 на все компоненты в месяц даже много будет. :))) Да чуть не забыл, нужны не ширпотребные детальки, а качественные, т. е. заказ на Али не проконает :facepalm: потому что в случае сбоя из-за некачественного железа, разработчик должен оплатить за свой счет ремонт и стоимость простоя оборудования. :dont_know:
Ну что согласны работать дешево и качественно с гарантией стабильной работы оборудования? :)

Eddy_Em писал(а):
В общем, получается, что за стоимость идиотского DS18 мы получили вменяемый термодатчик
Который нужно калибровать и учитывать нелинейность измерения температуры терморезистором, причем каждый датчик в отдельности. :facepalm: Нет уж, сами пользуйтесь. :)))


Вернуться наверх
 
Интеллектуальные ключи верхнего плеча семейства PROFET™+2 12V от Infineon

Компания Infineon представила новое семейство защищенных силовых ключей PROFET™+2 12V. Изделия объединяют в себе функции диагностики и различные защиты. Ключи PROFET™+2 12V имеют одно из самых низких в отрасли сопротивлений в открытом состоянии RDS(ON) (от 2,6 мОм) и выпускаются в миниатюрном корпусе TSDSO-14 с шагом выводов 0,65 мм. Благодаря функции ReverseON все семейство соответствует строгим требованиям по защите от обратной полярности питания, впервые реализованной в одном чипе.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Вт июн 02, 2020 21:39:17 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1853
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15859
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Раньше, между прочим, эти датчики были в госреестре средств измерений... сейчас не в курсе.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Ср апр 21, 2021 21:16:33 
Родился

Зарегистрирован: Чт май 02, 2019 07:43:46
Сообщений: 8
Рейтинг сообщения: 0
Да чего вы кинулись код то кидать?

Eddy_Em писал(а):
VladislavS, так ведь и подход абсолютно разный: на аврке нет DMA, там реализовать 1-wire можно только двумя способами: таймер+прерывание или UART. А на STM32 можно таймер с DMA, можно USART с DMA…



А кто-нибудь может выложить код для STM32 где реализован 1-wire способом: таймер+прерывание?
А то сижу изобретаю велосипед.
USART не хочу использовать, к тому же не хочу подключать несколько DS18B20 на одну линию, хочу каждый датчики на отдельную ногу STM32, тут ни каких USART не хватит.
Пытался сам переписать свой старый код от AVR с delay() на использование таймера, но не пойму как в STM32 таймер работает, можно ли внутри прерывания таймера поменять значение перезагрузки (TIM_Period)?
Т.е. я хотел в начале слота сначала выдать на 1-wire 0, настроить таймер на 1мкс, запустить таймер, потом внутри прерывания таймера например, выдать на 1-wire 1 и перенастроить таймер например на 60мкс (окончание слота). Вот у меня такое впечатление, что внутри прерывания не перенастраивается таймер, может я вообще как-то неправильно таймер настроил. Может кто подскажет, что как то по другому нужно делать 1-wire на таймере.
Вот кусок моего кода работы с таймером (только не смейтесь, микроконтроллерами не занимаюсь, так только, разовую самоделку нужно сделать):

void TIM3_Set_Period(uint32_t a_us)
{

TIM_TimeBaseInitTypeDef TIMER_InitStructure;

TIM_TimeBaseStructInit(&TIMER_InitStructure);
TIMER_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIMER_InitStructure.TIM_Prescaler = 71; //1 мкс
TIMER_InitStructure.TIM_Period = a_us;
TIM_TimeBaseInit(TIM3, &TIMER_InitStructure);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
// TIM_Cmd(TIM3, ENABLE);

}

void TIM3_init(void)
{
// TIMER3
NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

TIM3_Set_Period(2); // по умолчанию прерывание через 2 мкс

/* NVIC Configuration */
/* Enable the TIM4_IRQn Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{

/* Даём знать, что обработали прерывание */
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

TIM_Cmd(TIM3, DISABLE);

switch(OneWire_step)
{
case Read_init:

OneWire_writePinHIGH();
TIM3_Set_Period(200); // здесь должно быть <15 мкс, а тут хоть 200 ставлю все равно температуру считывает, будь то и не меняет TIM_Period
OneWire_step = Read_Bit;

break;

case Read_Bit:

// - Read bit
OneWire_Bit = OneWire_readPin();

TIM3_Set_Period(60); // временной слот минимум 60 мкс
OneWire_step = End_slot;

break;


case End_slot:
OneWire_step = 0;
OneWire_done = 1;
break;
}; // end switch

if ( !OneWire_done ) {
TIM_SetCounter(TIM3, 0);
TIM_Cmd(TIM3, ENABLE);
}


}
}

uint8_t OneWire_readBit(void){

OneWire_done = 0;

// - Drop line
OneWire_writePinLOW();

TIM3_Set_Period(1); // низкий уровень не менее 1us
OneWire_step = Read_init;

TIM_SetCounter(TIM3, 0);
TIM_Cmd(TIM3, ENABLE);


delay_us( 100 ); // чтоб работало пока пришлось такой костыль подставить, пока не разобрался с настройкой таймера в прерывании

uint8_t Bit = OneWire_Bit;
return Bit;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Ср апр 21, 2021 21:47:39 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
У меня на гитхабе. Как раз таймер + DMA. Таймер + прерывание не нужно: сильно напрягает ядро. Но я и такое делал (для STM8S, т.к. у них нет DMA).
UPD: прочитал, хотелки. Как-то это через одно место получается. Но можно и так: повесить 16 датчиков на все ноги одного порта (скажем, PORTB). Порты настроить на выход с открытым стоком. Избранным таймером при помощи DMA запинывать в порт по UEV данные в ODR, а по CC1 читать данные из IDR. Как раз подобным образом (только в одну сторону) я сейчас работаю с RGB светодиодной панелью.

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: DS18B20 в паре с STM32F103C8
СообщениеДобавлено: Пт апр 23, 2021 21:36:14 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
зачем Вы разным объектам даете такие схожие имена, от "OneWire" в глазах рябит ;))
вот имена ваших двух функций "OneWire_readPin", "OneWire_readBit" - в листинге вы их быстро отличаете?

"... не пойму как в STM32 таймер работает, можно ли внутри прерывания таймера поменять значение ..."
таймер - периферия, ему фиолетово откуда вы к нему обращаетесь - с основного цикла или с обработчика прерывания.
Просто поменять то, что вы называете " значение перезагрузки" - это всего лишь:
TIM3->ARR = 60-1;
как видите для этого не нужны ни библиотеки ни оформление отдельной функции, но вот чтобы происходило то, зачем это делается надо немного подтянуть матчасть.
На примере -
TIM3->ARR = 60-1;
TIM3->EGR = TIM_EGR_UG;
TIM3->CR1 |= ( TIM_CR1_OPM|TIM_CR1_CEN );
(таймер остановлен), в ARR новое значение, EGR_UG - "проталкивание" значений регистров (в том числе ARR) в так называемые теневые, бит OPM - это если надо, чтоб таймер сам остановился после одного цикла, CEN - разрешить тактирование таймера (снятие бита- блокировать тактирование) !только тактирование - ни сброса значений, ни обновления регистров при этом не происходит.
Смениться значение периода и на идущем таймере (только по первой строчке, две последующие не нужны), но надо понимать влияние бита ARPE в регистре TIMx_CR1. все есть в RM0008 в картинках.

эти словеса не в качестве альтернативы к предыдущему сообщению, а просто как ответ на вопрос. :beer:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 29 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y