{"id":20330161,"url":"https://github.com/octaprog7/ads1115","last_synced_at":"2026-04-20T04:32:33.040Z","repository":{"id":237317925,"uuid":"789669343","full_name":"octaprog7/ads1115","owner":"octaprog7","description":"Модуль MicroPython для управления ADS1115. Многоканальный, дифференциальный I2C АЦП от TI. MicroPython module for controlling ADS1115. Multichannel, differential I2C ADC from TI.","archived":false,"fork":false,"pushed_at":"2024-09-04T20:52:59.000Z","size":374,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-04T12:23:08.458Z","etag":null,"topics":["adc","i2c","micropython"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/octaprog7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-21T08:07:45.000Z","updated_at":"2024-09-04T20:53:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"f190a617-68f6-4129-860e-7dc22ead118b","html_url":"https://github.com/octaprog7/ads1115","commit_stats":null,"previous_names":["octaprog7/ads1115"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/octaprog7/ads1115","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octaprog7%2Fads1115","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octaprog7%2Fads1115/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octaprog7%2Fads1115/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octaprog7%2Fads1115/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octaprog7","download_url":"https://codeload.github.com/octaprog7/ads1115/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octaprog7%2Fads1115/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32032675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adc","i2c","micropython"],"created_at":"2024-11-14T20:15:18.222Z","updated_at":"2026-04-20T04:32:33.003Z","avatar_url":"https://github.com/octaprog7.png","language":"Python","funding_links":[],"categories":["Libraries"],"sub_categories":["IO"],"readme":"Модуль MicroPython для управления ADS1115. Многоканальный, дифференциальный I2C АЦП от TI.\nMicroPython module for controlling ADS1115. Multichannel, differential I2C ADC from TI.\n\n# Описание\nADS1115 представляет собой прецизионный маломощный 16-разрядный I2C-совместимый \nаналого-цифровой преобразователь (АЦП). ADS1115 включает в себя источник опорного напряжения с малым дрейфом и генератор. \nТакже имеется усилитель с программируемым усилением (PGA) и цифровой компаратор. Эти особенности, а также широкий \nдиапазон рабочих напряжений питания, делают ADS1115 подходящим для приложений измерения датчиков с ограниченной мощностью.\n\n# Применения\n* Портативные приборы\n* Мониторинг напряжения и тока батарей\n* Измерение температуры\n* Бытовая электроника\n* Автоматизация производства и управление процессами\n\n# Питание\nНапряжение питания 3.3, 5.0 В (от 2.0 В до 5.5 В)!\n\n## Адрес датчика\nНаходятся в диапазоне 72..75.\n\n# Шина I2C\nПросто подключите контакты (VCC, GND, SDA, SCL) платы с ADS1115 к соответствующим контактам Arduino, \nESP или любой другой платы с прошивкой MicroPython! Подайте питание на плату.\n\n# Загрузка ПО в плату\nЗагрузите прошивку micropython на плату NANO(ESP и т. д.), а затем файлы: main.py, ads1115mod.py и папку sensor_pack_2 полностью!\nЗатем откройте main.py в своей IDE и запустите/выполните его.\n\n# Режимы работы АЦП\n## Ручной\nНа каждое измерение нужен вызов метода start_measurement(single_shot=True... .\n\n## Автоматический\nВызовом метода start_measurement, датчик переводится в режим автоматического выполнения измерений. start_measurement(single_shot=False... .\n\n# Модуль adcmod\nПредставляет собой основу для описания любого АЦП. Выражаясь языком программиста, класс ADC, является\nклассом, наследуя который, можно программно описать АЦП. В частности, ADS1115!\n\n## Методы модуля \n\n### def __init__(self, init_props: adc_init_props, model: str = None):\nКонструктор. Параметры:\n* init_props - параметры, описывающие АЦП: опорное напряжение, предельное кол-во значащих бит в отсчете, \n  количество обычных (single ended) каналов, количество дифференциальных(differential) каналов, дифференциальный АЦП (bool).\n* model - строковое наименование АЦП, по которому, функция возвратит init_props.  \n\n### def get_general_props(self) -\u003e adc_general_props:\nВозвращает основные свойства АЦП:\n* Опорное напряжение\n* Текущее кол-во бит в отсчете\n* Предельное кол-во бит в отсчете\n* Текущий номер канала\n* Кол-во обычных (single ended) каналов\n* Кол-во дифференциальных (differential) каналов\n\n### def get_general_raw_props(self) -\u003e adc_general_raw_props:\nВозвращает основные 'сырые' свойства АЦП, которые считываются из регистра, обычно конфигурации:\n* Текущая \"частота\" взятия отсчетов\n* Текущее усиление PGA (усилитель с программируемым усилением)\n* Режим работы АЦП (одиночный или автоматический)\n\n### def get_specific_props(self):\nВозвращает уникальные для АЦП свойства, желательно в виде именованного кортежа. \nДля переопределения в классе-наследнике!\n\n### def check_gain_raw(self, gain_raw: int) -\u003e int:\nПроверяет сырое усиление на правильность. В случае ошибки (значение вне допустимого диапазона) выброси исключение!\nВозвращает значение gain_raw в случае успеха! Для переопределения в классе-наследнике!\nВызывается в методе start_measurement. \n\n### def check_data_rate_raw(self, data_rate_raw: int) -\u003e int:\nПроверяет сырое значение 'частоты' взятия отсчетов, data_rate, на правильность. В случае ошибки выброси исключение!\nВозвращает data_rate_raw в случае успеха! Для переопределения в классе-наследнике.\n\n### def get_lsb(self) -\u003e float:\nВозвращает цену младшего разряда в Вольтах в зависимости от текущих настроек АЦП.\n\n### def get_conversion_cycle_time(self) -\u003e int:\nВозвращает время преобразования в [мкc/мс] аналогового значения в цифровое в зависимости от текущих настроек АЦП. \nПереопредели для каждого АЦП!\n\n### def get_raw_value(self) -\u003e int:\nВозвращает 'сырое' значение отсчета АЦП. Переопределяется в классах - наследниках!\n\n### def get_raw_value_ex(self, delta: int = 5) -\u003e raw_value_ex:\nВозвращает именованный кортеж: 'сырое' значение отсчета АЦП, нижний предел, верхний предел.\nПереопределяется в классах - наследниках!\n\n### def raw_value_to_real(self, raw_val: int) -\u003e float:\nПреобразует 'сырое' значение из регистра АЦП в значение в Вольтах.\n\n### def gain_raw_to_real(self, raw_gain: int) -\u003e float:\nПреобразует 'сырое' значение усиления в 'настоящее'.\n\n### def get_value(self, raw: bool = True) -\u003e float:\nВозвращает значение текущего канала в Вольтах, если raw в Ложь, в коде, если raw в Истина.\n\n### def get_current_channel(self) -\u003e adc_channel_info:\nВозвращает информацию о текущем активном канале АЦП.\n\n### def start_measurement(self, single_shot: bool, data_rate_raw: int, gain_raw: int, channel: int, differential_channel: bool)\nЗапуск однократного(single_shot в Истина) или многократного(single_shot в Ложь) измерения.\ndata_rate_raw - частота получения выборок АЦП, отсчетов в сек., RAW-параметр, смотри в datasheet битовое поле!\ngain_raw - коэффициент усиления входного аналогового напряжения, RAW-параметр, смотри в datasheet битовое поле!\nchannel - номер аналогового входа. От 0 до self._channels/self._diff_channels - 1\ndifferential_channel - если Истина, то канал с номером channel дифференциальный(!)\nВнимание! Последней строкой этого метода всегда вызывайте метод raw_config_to_adc_properties для\nзаписи значений в соответствующие поля класса!\n\n### def raw_config_to_adc_properties(self, raw_config: int):\nВозвращает текущие настройки датчика из числа, возвращенного get_raw_config(!), в поля(!) класса.\nraw_config -\u003e adc_properties\n\n### def adc_properties_to_raw_config(self) -\u003e int:\nПреобразует свойства АЦП из полей класса в 'сырую' конфигурацию АЦП. adc_properties -\u003e raw_config\n\n### def get_raw_config(self) -\u003e int:\nВозвращает(считывает) текущие настройки датчика из регистров(конфигурации) в виде числа.\n\n### def set_raw_config(self, value: int):\nЗаписывает настройки (value) во внутреннюю память/регистр датчика.\n\n# ADS1115\n## Параметры АЦП в методах\n### def start_measurement(self, single_shot: bool, data_rate_raw: int, gain_raw: int, channel: int, differential_channel: bool): \n\n| Имя параметра | raw значения | Значения                                    | ___ | ___ |\n|---------------|--------------|---------------------------------------------|-----|-----|\n| data_rate_raw | 0..7         | 8, 16, 32, 64, 128, 250, 475, 860           |     |     |\n| gain_raw      | 0..5         | +/-3, +/-2, +/-1, +/-0.5, +/-0.25, +/-0.125 |     |     |\n| channel_raw   | 0..7         | 0 - AIN0-AIN1 (diff),                       |     |     |\n|               |              | 1 - AIN0-AIN3 (diff)                        |     |     |   \n|               |              | 2 - AIN1-AIN3 (diff)                        |     |     |\n|               |              | 3 - AIN2-AIN3 (diff)                        |     |     |\n|               |              | 4 - AIN0-GND                                |     |     |\n|               |              | 5 - AIN1-GND                                |     |     |\n|               |              | 6 - AIN2-GND                                |     |     |\n|               |              | 7 - AIN3-GND                                |     |     |\n|               |              | AIN3-GND                                    |     |     |\n\n### Зависимость gain от raw_gain, (коэффициента усиления от 'сырого' усиления)  \n\n| raw gain | gain |\n|----------|------|\n| 0        | 1/3  |\t\n| 1        | 1/2  |\n| 2        | 1\t   |   \n| 3        | 2\t   |\n| 4        | 4    |\n| 5        | 4    |\n\n### Зависимость частоты и времени преобразования от raw_sample_rate ('сырой' частоты преобразования)\n| raw sample rate | частота преобразования [Гц] | Время преобразования, мкс |\n|-----------------|-----------------------------|---------------------------|\n| 0               | 8                           | 125_000                   |\n| 1               | 16                          | 62500                     |\n| 2               | 32\t                         | 31250                     |\n| 3               | 64\t                         | 15625                     |\n| 4               | 128                         | 7812.5                    |\n| 5               | 250                         | 4000                      |\n| 6               | 475                         | 2105.3                    |\n| 7               | 860                         | 1162.8                    |\n\n\nchannel - номер канала. 8 каналов АЦП я разбил на две группы по 4 канала 0..3. Если вы установите differential_channel в ЛОЖЬ, то\nподключите к PGA обычный (single ended) канал, иначе подключите PGA дифференциальный канал. \n\n# Предупреждение\nНикогда не подавайте на входы АЦП напряжение больше + U_пит. и меньше 0 Вольт!\n\nОтличительная особенность АЦП с дифференциальным входом в том, что результат преобразования всегда будет знаковым! \nКогда на IN+ потенциал больше чем на IN-, результат будет положительный, иначе отрицательный. \nТо есть если у нас 16-битный АЦП с дифференциальным входом, результат преобразования будет находиться в пределах от -32767 до +32767. \nЭти 65536 отсчета соответствуют опорному напряжению, а дальше все, как у обычного single-ended АЦП.\n\n## Преимущества дифференциального АЦП перед single-ended:\n* устраняет любой синфазный шум\n* позволяет измерять малые напряжения при больших смещениях\n\n\n# Плата с ADS1115\n![alt text](https://github.com/octaprog7/ads1115/blob/master/pics/1115_board.jpg)\n# Среда разработки (IDE)\n## IDE\n![alt text](https://github.com/octaprog7/ads1115/blob/master/pics/ide_1115.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctaprog7%2Fads1115","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctaprog7%2Fads1115","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctaprog7%2Fads1115/lists"}