diff --git a/Article_Scientifique/main.aux b/Article_Scientifique/main.aux index ed830b8..9628bf4 100644 --- a/Article_Scientifique/main.aux +++ b/Article_Scientifique/main.aux @@ -21,6 +21,7 @@ \citation{mohammd_taher_new_2021} \@writefile{toc}{\contentsline {section}{\numberline {I}Introduction}{1}{section.1}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {II}Related Work}{1}{section.2}\protected@file@percent } +\newlabel{sec:relatedwork}{{II}{1}{Related Work}{section.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {II-A}}Modeling of BLDC Motor}{1}{subsection.2.1}\protected@file@percent } \citation{gieras_modern_2023} \citation{gieras_modern_2023,gasc_conception_2004} @@ -46,42 +47,56 @@ \@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {II-D}4}Dynamic Response}{2}{subsubsection.2.4.4}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {III}Research gap}{2}{section.3}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {IV}Aim and Research Objectives}{2}{section.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {V}Hardware-Based Six-Step Commutation Controller}{2}{section.5}\protected@file@percent } +\newlabel{sec:sixstep}{{V}{2}{Hardware-Based Six-Step Commutation Controller}{section.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {VI}STM32-Based Field-Oriented Control Motor Drive}{2}{section.6}\protected@file@percent } +\newlabel{sec:foc}{{VI}{2}{STM32-Based Field-Oriented Control Motor Drive}{section.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Choice of FOC Over Trapezoidal Commutation}{3}{subsection.6.1}\protected@file@percent } +\@writefile{lot}{\contentsline {table}{\numberline {I}{\ignorespaces Comparison between FOC and trapezoidal (six-step) commutation}}{3}{table.1}\protected@file@percent } +\newlabel{tab:foc_vs_trap}{{I}{3}{Comparison between FOC and trapezoidal (six-step) commutation}{table.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Base Design: Cheap FOCer-2 Project}{3}{subsection.6.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Integration of the Rocacher FOC Tile}{3}{subsection.6.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Pin Compatibility Verification: L476 vs F405}{3}{subsection.6.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Schematic Design and KiCad Implementation}{3}{subsection.6.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-F}}Routing Challenges and Current Status}{3}{subsection.6.6}\protected@file@percent } \citation{b1} \citation{b1} \citation{b2} -\@writefile{toc}{\contentsline {section}{\numberline {V}Hardware-Based Six-Step Commutation Controller}{3}{section.5}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {VI}STM32-Based Field-Oriented Control Motor Drive}{3}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {VII}Software and Connectivity}{3}{section.7}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}BLE Compatibility With the VESC}{3}{subsection.7.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}1}First Experiment}{3}{subsubsection.7.1.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}2}HC-05 and the VESC}{3}{subsubsection.7.1.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}3}BLE Vulnerability}{3}{subsubsection.7.1.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Code integrity}{3}{subsection.7.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}1}Context}{3}{subsubsection.7.2.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}2}LispBM extraction}{3}{subsubsection.7.2.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}3}LispBM Code}{3}{subsubsection.7.2.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}4}Proposed Solution}{3}{subsubsection.7.2.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}VESC Compiling}{3}{subsection.7.3}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {VIII}Dynamic Modelling and Control of the Bicycle–Cargo System}{3}{section.8}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-A}}Dynamic System Modelling}{3}{subsection.8.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-B}}PI-Based Control Strategy}{4}{subsection.8.2}\protected@file@percent } -\newlabel{subsec:Simulink_model}{{\mbox {VIII-B}}{4}{PI-Based Control Strategy}{subsection.8.2}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Closed-loop model of the bicycle–cargo system with PI control.}}{4}{figure.1}\protected@file@percent } -\newlabel{fig:simulink-closedloop}{{1}{4}{Closed-loop model of the bicycle–cargo system with PI control}{figure.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-C}}Control Architecture Exploration}{4}{subsection.8.3}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {IX}Results}{4}{section.9}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IX-A}}Bicycle-Cargo System Control Results}{4}{subsection.9.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-A}1}Simulation Results}{4}{subsubsection.9.1.1}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Position tracking error between bicycle and cargo cart.}}{4}{figure.2}\protected@file@percent } -\newlabel{fig:tracking-error}{{2}{4}{Position tracking error between bicycle and cargo cart}{figure.2}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-A}2}Experimental Load Characterization}{4}{subsubsection.9.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VII}Software and Connectivity}{4}{section.7}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}BLE Compatibility With the VESC}{4}{subsection.7.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}1}First Experiment}{4}{subsubsection.7.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}2}HC-05 and the VESC}{4}{subsubsection.7.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}3}BLE Vulnerability}{4}{subsubsection.7.1.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Code integrity}{4}{subsection.7.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}1}Context}{4}{subsubsection.7.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}2}LispBM extraction}{4}{subsubsection.7.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}3}LispBM Code}{4}{subsubsection.7.2.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}4}Proposed Solution}{4}{subsubsection.7.2.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}VESC Compiling}{4}{subsection.7.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VIII}Dynamic Modelling and Control of the Bicycle-Cargo System}{4}{section.8}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-A}}Dynamic System Modelling}{4}{subsection.8.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-B}}PI-Based Control Strategy}{5}{subsection.8.2}\protected@file@percent } +\newlabel{subsec:Simulink_model}{{\mbox {VIII-B}}{5}{PI-Based Control Strategy}{subsection.8.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Closed-loop model of the bicycle-cargo system with PI control.}}{5}{figure.1}\protected@file@percent } +\newlabel{fig:simulink-closedloop}{{1}{5}{Closed-loop model of the bicycle-cargo system with PI control}{figure.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-C}}Control Architecture Exploration}{5}{subsection.8.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {IX}Results}{5}{section.9}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IX-A}}FOC Controller Validation}{5}{subsection.9.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-A}1}Current Status Summary}{5}{subsubsection.9.1.1}\protected@file@percent } +\@writefile{lot}{\contentsline {table}{\numberline {II}{\ignorespaces FOC controller development status}}{5}{table.2}\protected@file@percent } +\newlabel{tab:foc_status}{{II}{5}{FOC controller development status}{table.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IX-B}}Bicycle-Cargo System Control Results}{5}{subsection.9.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-B}1}Simulation Results}{5}{subsubsection.9.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-B}2}Experimental Load Characterization}{5}{subsubsection.9.2.2}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Position tracking error between bicycle and cargo cart.}}{6}{figure.2}\protected@file@percent } +\newlabel{fig:tracking-error}{{2}{6}{Position tracking error between bicycle and cargo cart}{figure.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Measured motor current under three loading conditions.}}{6}{figure.3}\protected@file@percent } +\newlabel{fig:motor-currents}{{3}{6}{Measured motor current under three loading conditions}{figure.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {X}Discussion}{6}{section.10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {XI}Perspectives and Future Work}{6}{section.11}\protected@file@percent } \bibstyle{IEEEtran} \bibdata{PIR_MadMax3} \bibcite{patil_analysis_2025}{1} -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Measured motor current under three loading conditions.}}{5}{figure.3}\protected@file@percent } -\newlabel{fig:motor-currents}{{3}{5}{Measured motor current under three loading conditions}{figure.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {X}Discussion}{5}{section.10}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {XI}Conclusion/Summary}{5}{section.11}\protected@file@percent } \bibcite{li_quantitative_2019}{2} \bibcite{mohammd_taher_new_2021}{3} \bibcite{gieras_modern_2023}{4} @@ -91,5 +106,7 @@ \bibcite{lee_advanced_2001}{8} \bibcite{b1}{9} \bibcite{b2}{10} -\@writefile{toc}{\contentsline {section}{References}{6}{section*.2}\protected@file@percent } -\gdef \@abspage@last{6} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {XI-A}}Hardware Completion and Testing}{7}{subsection.11.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {XII}Conclusion/Summary}{7}{section.12}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{7}{section*.3}\protected@file@percent } +\gdef \@abspage@last{7} diff --git a/Article_Scientifique/main.log b/Article_Scientifique/main.log index 5a5a868..ff0b93a 100644 --- a/Article_Scientifique/main.log +++ b/Article_Scientifique/main.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2026.3.16) 13 MAY 2026 18:32 +This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2026.3.16) 13 MAY 2026 19:48 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -343,12 +343,32 @@ Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 (/usr/share/texlive/texmf-dist/tex/latex/placeins/placeins.sty Package: placeins 2005/04/18 v 2.2 ) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen175 +\lightrulewidth=\dimen176 +\cmidrulewidth=\dimen177 +\belowrulesep=\dimen178 +\belowbottomsep=\dimen179 +\aboverulesep=\dimen180 +\abovetopsep=\dimen181 +\cmidrulesep=\dimen182 +\cmidrulekern=\dimen183 +\defaultaddspace=\dimen184 +\@cmidla=\count292 +\@cmidlb=\count293 +\@aboverulesep=\dimen185 +\@belowrulesep=\dimen186 +\@thisruleclass=\count294 +\@lastruleclass=\count295 +\@thisrulewidth=\dimen187 +) (/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty Package: siunitx 2022-02-02 v3.0.46 A comprehensive (SI) units package -\l__siunitx_angle_tmp_dim=\dimen175 +\l__siunitx_angle_tmp_dim=\dimen188 \l__siunitx_angle_marker_box=\box54 \l__siunitx_angle_unit_box=\box55 -\l__siunitx_compound_count_int=\count292 +\l__siunitx_compound_count_int=\count296 (/usr/share/texlive/texmf-dist/tex/latex/translations/translations.sty Package: translations 2022/01/04 v1.11 internationalization of LaTeX2e packages @@ -356,25 +376,25 @@ Package: translations 2022/01/04 v1.11 internationalization of LaTeX2e packages (/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW) -\etb@tempcnta=\count293 +\etb@tempcnta=\count297 )) -\l__siunitx_number_exponent_fixed_int=\count294 -\l__siunitx_number_min_decimal_int=\count295 -\l__siunitx_number_min_integer_int=\count296 -\l__siunitx_number_round_precision_int=\count297 -\l__siunitx_number_group_minimum_int=\count298 +\l__siunitx_number_exponent_fixed_int=\count298 +\l__siunitx_number_min_decimal_int=\count299 +\l__siunitx_number_min_integer_int=\count300 +\l__siunitx_number_round_precision_int=\count301 +\l__siunitx_number_group_minimum_int=\count302 \l__siunitx_table_tmp_box=\box56 -\l__siunitx_table_tmp_dim=\dimen176 -\l__siunitx_table_column_width_dim=\dimen177 +\l__siunitx_table_tmp_dim=\dimen189 +\l__siunitx_table_column_width_dim=\dimen190 \l__siunitx_table_integer_box=\box57 \l__siunitx_table_decimal_box=\box58 \l__siunitx_table_before_box=\box59 \l__siunitx_table_after_box=\box60 -\l__siunitx_table_before_dim=\dimen178 -\l__siunitx_table_carry_dim=\dimen179 -\l__siunitx_unit_tmp_int=\count299 -\l__siunitx_unit_position_int=\count300 -\l__siunitx_unit_total_int=\count301 +\l__siunitx_table_before_dim=\dimen191 +\l__siunitx_table_carry_dim=\dimen192 +\l__siunitx_unit_tmp_int=\count303 +\l__siunitx_unit_position_int=\count304 +\l__siunitx_unit_total_int=\count305 (/usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty (/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -382,16 +402,16 @@ Package: expl3 2022-01-21 L3 programming layer (loader) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def File: l3backend-pdftex.def 2022-01-12 L3 backend support: PDF output (pdfTeX) -\l__color_backend_stack_int=\count302 +\l__color_backend_stack_int=\count306 \l__pdf_internal_box=\box61 )) Package: l3keys2e 2022-01-12 LaTeX2e option processing using LaTeX3 keys ) (/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty Package: array 2021/10/04 v2.5f Tabular extension package (FMi) -\col@sep=\dimen180 +\col@sep=\dimen193 \ar@mcellbox=\box62 -\extrarowheight=\dimen181 +\extrarowheight=\dimen194 \NC@list=\toks23 \extratabsurround=\skip56 \backup@length=\skip57 @@ -414,8 +434,8 @@ Package graphics Info: Driver file: pdftex.def on input line 107. (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex )) -\Gin@req@height=\dimen182 -\Gin@req@width=\dimen183 +\Gin@req@height=\dimen195 +\Gin@req@width=\dimen196 ) (/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty Package: textcomp 2020/02/02 v2.0n Standard LaTeX package @@ -438,31 +458,31 @@ Package xcolor Info: Model `Gray' substituted by `gray' on input line 1374. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1375. ) Package translations Info: No language package found. I am going to use `englis -h' as default language. on input line 18. +h' as default language. on input line 19. (./main.aux) \openout1 = `main.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. -LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 18. -LaTeX Font Info: ... okay on input line 18. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 19. +LaTeX Font Info: ... okay on input line 19. -- Lines per column: 56 (exact). -Package hyperref Info: Link coloring OFF on input line 18. +Package hyperref Info: Link coloring OFF on input line 19. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section @@ -472,11 +492,11 @@ Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) (/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) ) -\c@section@level=\count303 +\c@section@level=\count307 ) -LaTeX Info: Redefining \ref on input line 18. -LaTeX Info: Redefining \pageref on input line 18. -LaTeX Info: Redefining \nameref on input line 18. +LaTeX Info: Redefining \ref on input line 19. +LaTeX Info: Redefining \pageref on input line 19. +LaTeX Info: Redefining \nameref on input line 19. (./main.out) (./main.out) \@outlinefile=\write3 @@ -489,20 +509,20 @@ File: translations-basic-dictionary-english.trsl (english translation file `tra nslations-basic-dictionary') ) Package translations Info: loading dictionary `translations-basic-dictionary' f -or `english'. on input line 18. +or `english'. on input line 19. (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count304 -\scratchdimen=\dimen184 +\scratchcounter=\count308 +\scratchdimen=\dimen197 \scratchbox=\box64 -\nofMPsegments=\count305 -\nofMParguments=\count306 +\nofMPsegments=\count309 +\nofMParguments=\count310 \everyMPshowfont=\toks24 -\MPscratchCnt=\count307 -\MPscratchDim=\dimen185 -\MPnumerator=\count308 -\makeMPintoPDFobject=\count309 +\MPscratchCnt=\count311 +\MPscratchDim=\dimen198 +\MPnumerator=\count312 +\makeMPintoPDFobject=\count313 \everyMPtoPDFconversion=\toks25 ) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf @@ -513,13 +533,13 @@ Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e )) -LaTeX Font Info: Trying to load font information for U+msa on input line 122 +LaTeX Font Info: Trying to load font information for U+msa on input line 124 . (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Trying to load font information for U+msb on input line 122 +LaTeX Font Info: Trying to load font information for U+msb on input line 124 . (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd @@ -527,29 +547,29 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} -] -Underfull \vbox (badness 1354) has occurred while \output is active [] - - [2] -[3] -<./Figures/sys_dyn_matlab.png, id=202, 430.2474pt x 226.6869pt> +] [2] [3] [4] +<./Figures/sys_dyn_matlab.png, id=253, 430.2474pt x 226.6869pt> File: ./Figures/sys_dyn_matlab.png Graphic file (type png) -Package pdftex.def Info: ./Figures/sys_dyn_matlab.png used on input line 373. +Package pdftex.def Info: ./Figures/sys_dyn_matlab.png used on input line 517. (pdftex.def) Requested size: 252.0pt x 132.77559pt. -<./Figures/error_fig.png, id=206, 509.7444pt x 328.5876pt> +<./Figures/error_fig.png, id=258, 509.7444pt x 328.5876pt> File: ./Figures/error_fig.png Graphic file (type png) -Package pdftex.def Info: ./Figures/error_fig.png used on input line 399. +Package pdftex.def Info: ./Figures/error_fig.png used on input line 570. (pdftex.def) Requested size: 252.0pt x 162.44328pt. - [4 <./Figures/sys_dyn_matlab.png> <./Figures/error_fig.png (PNG copy)>] -<./Figures/Motor_currents.png, id=218, 499.6266pt x 328.1058pt> + + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +[5 <./Figures/sys_dyn_matlab.png>] +<./Figures/Motor_currents.png, id=271, 499.6266pt x 328.1058pt> File: ./Figures/Motor_currents.png Graphic file (type png) -Package pdftex.def Info: ./Figures/Motor_currents.png used on input line 421. +Package pdftex.def Info: ./Figures/Motor_currents.png used on input line 592. (pdftex.def) Requested size: 252.0pt x 165.48434pt. - -(./main.bbl [5 <./Figures/Motor_currents.png (PNG copy)>] + [6 <./Figures/error_fig.png (PNG copy)> <./Figures/Motor_currents.png (PNG cop +y)>] (./main.bbl Underfull \hbox (badness 1490) in paragraph at lines 97--99 []\OT1/ptm/m/n/8 ------, ``lispbm in vesc,'' []$https : / / github . com / vedd erb / bldc / tree / master / @@ -567,34 +587,35 @@ Before submitting the final camera ready copy, remember to: uses only Type 1 fonts and that every step in the generation process uses the appropriate paper size. -[6 - -] (./main.aux) +[7] (./main.aux) Package rerunfilecheck Info: File `main.out' has not changed. -(rerunfilecheck) Checksum: 4840E35989685C6A900816FED622AB01;6851. +(rerunfilecheck) Checksum: D428FCA31372168544B7CCCCB9675B0D;9238. ) Here is how much of TeX's memory you used: - 14802 strings out of 478287 - 281591 string characters out of 5849289 - 566416 words of memory out of 5000000 - 32767 multiletter control sequences out of 15000+600000 - 505639 words of font info for 98 fonts, out of 8000000 for 9000 + 14909 strings out of 478287 + 283324 string characters out of 5849289 + 567540 words of memory out of 5000000 + 32854 multiletter control sequences out of 15000+600000 + 508470 words of font info for 101 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 70i,8n,79p,470b,903s stack positions out of 5000i,500n,10000p,200000b,80000s + 70i,10n,79p,470b,753s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on main.pdf (6 pages, 315176 bytes). +type1/public/amsfonts/cm/cmmi8.pfb>< +/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb> +Output written on main.pdf (7 pages, 348626 bytes). PDF statistics: - 301 PDF objects out of 1000 (max. 8388607) - 266 compressed objects within 3 object streams - 57 named destinations out of 1000 (max. 500000) - 304 words of extra memory for PDF output out of 10000 (max. 10000000) + 372 PDF objects out of 1000 (max. 8388607) + 329 compressed objects within 4 object streams + 71 named destinations out of 1000 (max. 500000) + 384 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Article_Scientifique/main.out b/Article_Scientifique/main.out index 040b811..b45c272 100644 --- a/Article_Scientifique/main.out +++ b/Article_Scientifique/main.out @@ -12,25 +12,35 @@ \BOOKMARK [1][-]{section.4}{\376\377\000A\000i\000m\000\040\000a\000n\000d\000\040\000R\000e\000s\000e\000a\000r\000c\000h\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000s}{}% 12 \BOOKMARK [1][-]{section.5}{\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000-\000B\000a\000s\000e\000d\000\040\000S\000i\000x\000-\000S\000t\000e\000p\000\040\000C\000o\000m\000m\000u\000t\000a\000t\000i\000o\000n\000\040\000C\000o\000n\000t\000r\000o\000l\000l\000e\000r}{}% 13 \BOOKMARK [1][-]{section.6}{\376\377\000S\000T\000M\0003\0002\000-\000B\000a\000s\000e\000d\000\040\000F\000i\000e\000l\000d\000-\000O\000r\000i\000e\000n\000t\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000M\000o\000t\000o\000r\000\040\000D\000r\000i\000v\000e}{}% 14 -\BOOKMARK [1][-]{section.7}{\376\377\000S\000o\000f\000t\000w\000a\000r\000e\000\040\000a\000n\000d\000\040\000C\000o\000n\000n\000e\000c\000t\000i\000v\000i\000t\000y}{}% 15 -\BOOKMARK [2][-]{subsection.7.1}{\376\377\000B\000L\000E\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000W\000i\000t\000h\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{section.7}% 16 -\BOOKMARK [3][-]{subsubsection.7.1.1}{\376\377\000F\000i\000r\000s\000t\000\040\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t}{subsection.7.1}% 17 -\BOOKMARK [3][-]{subsubsection.7.1.2}{\376\377\000H\000C\000-\0000\0005\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{subsection.7.1}% 18 -\BOOKMARK [3][-]{subsubsection.7.1.3}{\376\377\000B\000L\000E\000\040\000V\000u\000l\000n\000e\000r\000a\000b\000i\000l\000i\000t\000y}{subsection.7.1}% 19 -\BOOKMARK [2][-]{subsection.7.2}{\376\377\000C\000o\000d\000e\000\040\000i\000n\000t\000e\000g\000r\000i\000t\000y}{section.7}% 20 -\BOOKMARK [3][-]{subsubsection.7.2.1}{\376\377\000C\000o\000n\000t\000e\000x\000t}{subsection.7.2}% 21 -\BOOKMARK [3][-]{subsubsection.7.2.2}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000e\000x\000t\000r\000a\000c\000t\000i\000o\000n}{subsection.7.2}% 22 -\BOOKMARK [3][-]{subsubsection.7.2.3}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000C\000o\000d\000e}{subsection.7.2}% 23 -\BOOKMARK [3][-]{subsubsection.7.2.4}{\376\377\000P\000r\000o\000p\000o\000s\000e\000d\000\040\000S\000o\000l\000u\000t\000i\000o\000n}{subsection.7.2}% 24 -\BOOKMARK [2][-]{subsection.7.3}{\376\377\000V\000E\000S\000C\000\040\000C\000o\000m\000p\000i\000l\000i\000n\000g}{section.7}% 25 -\BOOKMARK [1][-]{section.8}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g\000\040\000a\000n\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000o\000f\000\040\000t\000h\000e\000\040\000B\000i\000c\000y\000c\000l\000e\040\023\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m}{}% 26 -\BOOKMARK [2][-]{subsection.8.1}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000S\000y\000s\000t\000e\000m\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g}{section.8}% 27 -\BOOKMARK [2][-]{subsection.8.2}{\376\377\000P\000I\000-\000B\000a\000s\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000S\000t\000r\000a\000t\000e\000g\000y}{section.8}% 28 -\BOOKMARK [2][-]{subsection.8.3}{\376\377\000C\000o\000n\000t\000r\000o\000l\000\040\000A\000r\000c\000h\000i\000t\000e\000c\000t\000u\000r\000e\000\040\000E\000x\000p\000l\000o\000r\000a\000t\000i\000o\000n}{section.8}% 29 -\BOOKMARK [1][-]{section.9}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 30 -\BOOKMARK [2][-]{subsection.9.1}{\376\377\000B\000i\000c\000y\000c\000l\000e\000-\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000R\000e\000s\000u\000l\000t\000s}{section.9}% 31 -\BOOKMARK [3][-]{subsubsection.9.1.1}{\376\377\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000R\000e\000s\000u\000l\000t\000s}{subsection.9.1}% 32 -\BOOKMARK [3][-]{subsubsection.9.1.2}{\376\377\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000\040\000L\000o\000a\000d\000\040\000C\000h\000a\000r\000a\000c\000t\000e\000r\000i\000z\000a\000t\000i\000o\000n}{subsection.9.1}% 33 -\BOOKMARK [1][-]{section.10}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n}{}% 34 -\BOOKMARK [1][-]{section.11}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000/\000S\000u\000m\000m\000a\000r\000y}{}% 35 -\BOOKMARK [1][-]{section*.2}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 36 +\BOOKMARK [2][-]{subsection.6.1}{\376\377\000C\000h\000o\000i\000c\000e\000\040\000o\000f\000\040\000F\000O\000C\000\040\000O\000v\000e\000r\000\040\000T\000r\000a\000p\000e\000z\000o\000i\000d\000a\000l\000\040\000C\000o\000m\000m\000u\000t\000a\000t\000i\000o\000n}{section.6}% 15 +\BOOKMARK [2][-]{subsection.6.2}{\376\377\000B\000a\000s\000e\000\040\000D\000e\000s\000i\000g\000n\000:\000\040\000C\000h\000e\000a\000p\000\040\000F\000O\000C\000e\000r\000-\0002\000\040\000P\000r\000o\000j\000e\000c\000t}{section.6}% 16 +\BOOKMARK [2][-]{subsection.6.3}{\376\377\000I\000n\000t\000e\000g\000r\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000R\000o\000c\000a\000c\000h\000e\000r\000\040\000F\000O\000C\000\040\000T\000i\000l\000e}{section.6}% 17 +\BOOKMARK [2][-]{subsection.6.4}{\376\377\000P\000i\000n\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000V\000e\000r\000i\000f\000i\000c\000a\000t\000i\000o\000n\000:\000\040\000L\0004\0007\0006\000\040\000v\000s\000\040\000F\0004\0000\0005}{section.6}% 18 +\BOOKMARK [2][-]{subsection.6.5}{\376\377\000S\000c\000h\000e\000m\000a\000t\000i\000c\000\040\000D\000e\000s\000i\000g\000n\000\040\000a\000n\000d\000\040\000K\000i\000C\000a\000d\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6}% 19 +\BOOKMARK [2][-]{subsection.6.6}{\376\377\000R\000o\000u\000t\000i\000n\000g\000\040\000C\000h\000a\000l\000l\000e\000n\000g\000e\000s\000\040\000a\000n\000d\000\040\000C\000u\000r\000r\000e\000n\000t\000\040\000S\000t\000a\000t\000u\000s}{section.6}% 20 +\BOOKMARK [1][-]{section.7}{\376\377\000S\000o\000f\000t\000w\000a\000r\000e\000\040\000a\000n\000d\000\040\000C\000o\000n\000n\000e\000c\000t\000i\000v\000i\000t\000y}{}% 21 +\BOOKMARK [2][-]{subsection.7.1}{\376\377\000B\000L\000E\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000W\000i\000t\000h\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{section.7}% 22 +\BOOKMARK [3][-]{subsubsection.7.1.1}{\376\377\000F\000i\000r\000s\000t\000\040\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t}{subsection.7.1}% 23 +\BOOKMARK [3][-]{subsubsection.7.1.2}{\376\377\000H\000C\000-\0000\0005\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{subsection.7.1}% 24 +\BOOKMARK [3][-]{subsubsection.7.1.3}{\376\377\000B\000L\000E\000\040\000V\000u\000l\000n\000e\000r\000a\000b\000i\000l\000i\000t\000y}{subsection.7.1}% 25 +\BOOKMARK [2][-]{subsection.7.2}{\376\377\000C\000o\000d\000e\000\040\000i\000n\000t\000e\000g\000r\000i\000t\000y}{section.7}% 26 +\BOOKMARK [3][-]{subsubsection.7.2.1}{\376\377\000C\000o\000n\000t\000e\000x\000t}{subsection.7.2}% 27 +\BOOKMARK [3][-]{subsubsection.7.2.2}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000e\000x\000t\000r\000a\000c\000t\000i\000o\000n}{subsection.7.2}% 28 +\BOOKMARK [3][-]{subsubsection.7.2.3}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000C\000o\000d\000e}{subsection.7.2}% 29 +\BOOKMARK [3][-]{subsubsection.7.2.4}{\376\377\000P\000r\000o\000p\000o\000s\000e\000d\000\040\000S\000o\000l\000u\000t\000i\000o\000n}{subsection.7.2}% 30 +\BOOKMARK [2][-]{subsection.7.3}{\376\377\000V\000E\000S\000C\000\040\000C\000o\000m\000p\000i\000l\000i\000n\000g}{section.7}% 31 +\BOOKMARK [1][-]{section.8}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g\000\040\000a\000n\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000o\000f\000\040\000t\000h\000e\000\040\000B\000i\000c\000y\000c\000l\000e\000-\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m}{}% 32 +\BOOKMARK [2][-]{subsection.8.1}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000S\000y\000s\000t\000e\000m\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g}{section.8}% 33 +\BOOKMARK [2][-]{subsection.8.2}{\376\377\000P\000I\000-\000B\000a\000s\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000S\000t\000r\000a\000t\000e\000g\000y}{section.8}% 34 +\BOOKMARK [2][-]{subsection.8.3}{\376\377\000C\000o\000n\000t\000r\000o\000l\000\040\000A\000r\000c\000h\000i\000t\000e\000c\000t\000u\000r\000e\000\040\000E\000x\000p\000l\000o\000r\000a\000t\000i\000o\000n}{section.8}% 35 +\BOOKMARK [1][-]{section.9}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 36 +\BOOKMARK [2][-]{subsection.9.1}{\376\377\000F\000O\000C\000\040\000C\000o\000n\000t\000r\000o\000l\000l\000e\000r\000\040\000V\000a\000l\000i\000d\000a\000t\000i\000o\000n}{section.9}% 37 +\BOOKMARK [3][-]{subsubsection.9.1.1}{\376\377\000C\000u\000r\000r\000e\000n\000t\000\040\000S\000t\000a\000t\000u\000s\000\040\000S\000u\000m\000m\000a\000r\000y}{subsection.9.1}% 38 +\BOOKMARK [2][-]{subsection.9.2}{\376\377\000B\000i\000c\000y\000c\000l\000e\000-\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000R\000e\000s\000u\000l\000t\000s}{section.9}% 39 +\BOOKMARK [3][-]{subsubsection.9.2.1}{\376\377\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000R\000e\000s\000u\000l\000t\000s}{subsection.9.2}% 40 +\BOOKMARK [3][-]{subsubsection.9.2.2}{\376\377\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000\040\000L\000o\000a\000d\000\040\000C\000h\000a\000r\000a\000c\000t\000e\000r\000i\000z\000a\000t\000i\000o\000n}{subsection.9.2}% 41 +\BOOKMARK [1][-]{section.10}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n}{}% 42 +\BOOKMARK [1][-]{section.11}{\376\377\000P\000e\000r\000s\000p\000e\000c\000t\000i\000v\000e\000s\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000W\000o\000r\000k}{}% 43 +\BOOKMARK [2][-]{subsection.11.1}{\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000C\000o\000m\000p\000l\000e\000t\000i\000o\000n\000\040\000a\000n\000d\000\040\000T\000e\000s\000t\000i\000n\000g}{section.11}% 44 +\BOOKMARK [1][-]{section.12}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000/\000S\000u\000m\000m\000a\000r\000y}{}% 45 +\BOOKMARK [1][-]{section*.3}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 46 diff --git a/Article_Scientifique/main.pdf b/Article_Scientifique/main.pdf index 280851f..b4d77ba 100644 Binary files a/Article_Scientifique/main.pdf and b/Article_Scientifique/main.pdf differ diff --git a/Article_Scientifique/main.tex b/Article_Scientifique/main.tex index 6fc209d..57c3257 100644 --- a/Article_Scientifique/main.tex +++ b/Article_Scientifique/main.tex @@ -7,6 +7,7 @@ \usepackage{url} \usepackage[hidelinks]{hyperref} \usepackage{placeins} +\usepackage{booktabs} \usepackage{siunitx} \usepackage{graphicx} \usepackage{textcomp} @@ -112,6 +113,7 @@ We also argue the need for general public's safety when it comes to these bikes, % ********************************************* RELATED WORK *********************************************************** \section{Related Work} +\label{sec:relatedwork} \subsection{Modeling of BLDC Motor} The electromechanical model of a BLDC (Brushless DC) motor is foundational for understanding its behavior under different control @@ -206,19 +208,160 @@ Third, the security of the wireless communication interface is investigated, wit vulnerabilities. A Flipper Zero device is used as a diagnostic tool to evaluate potential attack surfaces and identify weaknesses in the communication layer. -Finally, a dynamic model of the bicycle–cargo system is developed to improve rider experience. +Finally, a dynamic model of the bicycle-cargo system is developed to improve rider experience. The objective is to minimize the perceived additional effort when towing a cargo cart. This is achieved through a -PID-based (Proportional–Integral–Derivative) control strategy combined with distance sensing, allowing adaptive +PID-based (Proportional-Integral-Derivative) control strategy combined with distance sensing, allowing adaptive assistance based on system dynamics. + % ***************************** Hardware-Based Six-Step Commutation Controller **************************************** \section{Hardware-Based Six-Step Commutation Controller} +\label{sec:sixstep} + % ***************************** STM32-Based Field-Oriented Control Motor Drive ***************************************** \section{STM32-Based Field-Oriented Control Motor Drive} - +\label{sec:foc} + + This section presents the design and implementation of a high-performance + motor controller based on Field-Oriented Control (FOC). + + \subsection{Choice of FOC Over Trapezoidal Commutation} + + Table~\ref{tab:foc_vs_trap} summarizes the key differences between the + two commutation strategies, based on the literature reviewed in + Section~\ref{sec:relatedwork}. + + \begin{table}[htbp] + \caption{Comparison between FOC and trapezoidal (six-step) commutation} + \label{tab:foc_vs_trap} + \centering + \begin{tabular}{lcc} + \toprule + \textbf{Criterion} & \textbf{FOC} & \textbf{Six-Step} \\ + \midrule + Torque ripple (at 500 rpm) & \SI{18.4}{\percent} & \SI{35.7}{\percent} \\ + Low-load efficiency & High & Moderate \\ + High-speed switching loss & Higher & Lower \\ + Position sensor requirement & Encoder (high resolution) & Hall sensors \\ + Implementation complexity & High & Low \\ + Hardware cost & Higher & Lower \\ + Dynamic response & Fast & Standard \\ + \bottomrule + \end{tabular} + \end{table} + + For our cargo bike application, rider comfort and smooth torque delivery + are priorities. FOC was therefore selected for the high-performance + controller, while a separate low-tech six-step board (Section~\ref{sec:sixstep}) + was developed for repairability. + + \subsection{Base Design: Cheap FOCer-2 Project} + + The starting point was the open-source \textit{Cheap FOCer-2} project, + which provides a complete KiCad design for a VESC-compatible board based + on an STM32F405 microcontroller. This design includes: + \begin{itemize} + \item A three-phase MOSFET full-bridge power stage. + \item Gate drivers with built-in dead-time insertion. + \item Shunt resistors for phase current sensing. + \item USB and CAN interfaces. + \item An expansion header for encoder or Hall sensors. + \end{itemize} + + The existing KiCad schematic and layout were used as the baseline for + our adaptations. + + \subsection{Integration of the Rocacher FOC Tile} + + Mr. Rocacher provided the Kicad schematic of a ready-to-use FOC tile based on an STM32L476 + microcontroller. + + The initial idea was to make this tile \textit{pluggable} into our + carrier board, similar to an Arduino shield. This would allow : + \begin{itemize} + \item Easy replacement of the computing core without re-soldering. + \item Modular upgrades of the microcontroller. + \item Simplified repair and maintenance. + \end{itemize} + + However, the Cheap FOCer-2 project was not designed for such modularity. + Its routing is dense and highly optimized for a single, non-removable + F405 chip. Adapting it to accept an L476 tile while preserving all + critical functions (PWM, current sensing, USB communication) proved + challenging. + + \subsection{Pin Compatibility Verification: L476 vs F405} + + Before modifying the PCB, a thorough pin compatibility check was + performed between the STM32L476 and the STM32F405 + (original Cheap FOCer-2 design). The following aspects were examined: + \begin{itemize} + \item Physical pinout in LQFP64 package. + \item Alternate functions for PWM timers. + \item USB DP/DM pins (PA11/PA12). + \item Analog inputs for current sensing. + \item UART for BLE communication. + \end{itemize} + + Three pin conflicts were identified and resolved as follows. + + First, the SPI\_MISO function on PA6 for the STM32F405 conflicts with a + DAC output on the same pin for the STM32L476 tile. Since this pin is + used for current sensing via SPI in the original Cheap FOCer-2 design, + the SPI communication was remapped to PA5 on the L476, which provides a + compatible alternate function. + + Second, the gate driver enable signal (EN\_GATE) was originally assigned + to PB5 on the F405. This pin is not accessible on the L476 + tile. The signal was therefore moved to PC5, which is available and + can be configured as a standard GPIO output. + + Third, Hall sensor C was originally connected to PC8 (TIM8) on the F405. + This pin is not available on the L476 tile. The Hall sensor input was + therefore reassigned to PB3, configured as TIM2\_CH2, which provides + the necessary input capture functionality for Hall signal decoding. + + All other critical functions (PWM timers, complementary PWM, enable + signals, encoder inputs, UART, USB, and CAN) remain fully compatible + between the two microcontrollers. The ADC channel differences between + the F405 (ADC123/ADC12) and the L476 (ADC3) must still be handled in + firmware, as noted previously. + + \subsection{Schematic Design and KiCad Implementation} + + The original Cheap FOCer-2 schematic was modified in KiCad to replace the + integrated F405 with connectors for the L476 tile. The main modifications + included: + \begin{itemize} + \item Removal of the F405 and its associated passive components. + \item Addition of two 20-pin headers to receive the Rocacher tile. + \item Re-routing of PWM, ADC, and USB signals to the headers. + \end{itemize} + + The schematic passed Electrical Rule Check (ERC) with no errors. + + \subsection{Routing Challenges and Current Status} + + The PCB layout was then started. The original Cheap FOCer-2 routing is + very dense. Inserting connectors for the removable tile while maintaining signal integrity proved + difficult. + + The main issues encountered were: + \begin{itemize} + \item Some footprints for the tile connectors did not appear correctly + in the layout after schematic import. + \item Routing of high-current paths (battery, motor phases) around the + connectors required additional vias, increasing resistance. + \item Decoupling capacitors had to be repositioned, raising concerns + about switching noise. + \end{itemize} + + Currently, the schematic is validated, and the layout is under + development. Once routing is completed, the board will be manufactured + and tested with the VESC firmware adapted to the L476 tile. % ************************************** SOFTWARE AND CONNECTIVITY ***************************************************** @@ -304,8 +447,7 @@ for the the MAD associates. % ************************************ DYNAMIC MODELLING *************************************************************** -\section{Dynamic Modelling and Control of the Bicycle–Cargo System} - +\section{Dynamic Modelling and Control of the Bicycle-Cargo System} \subsection{Dynamic System Modelling} The studied system consists of a bicycle towing a cargo cart through a rigid mechanical linkage. This link is only used @@ -376,7 +518,7 @@ where $e_{\text{ref}} = \SI{-0.5}{\meter}$ represents the desired equilibrium of \centering \includegraphics[width=\linewidth]{./Figures/sys_dyn_matlab.png} - \caption{Closed-loop model of the bicycle–cargo system with PI control.} + \caption{Closed-loop model of the bicycle-cargo system with PI control.} \label{fig:simulink-closedloop} \end{figure} @@ -390,6 +532,33 @@ where $e_{\text{ref}} = \SI{-0.5}{\meter}$ represents the desired equilibrium of \section{Results} +\subsection{FOC Controller Validation} + + \subsubsection{Current Status Summary} + + Table~\ref{tab:foc_status} summarizes the current status of the FOC + controller development. + + \begin{table}[htbp] + \caption{FOC controller development status} + \label{tab:foc_status} + \centering + \begin{tabular}{l c} + \toprule + \textbf{Task} & \textbf{Status} \\ + \midrule + VESC firmware compilation & Completed \\ + Pin compatibility (F405 / L476) & Completed \\ + Schematic design (KiCad) & Completed \\ + ERC validation & Completed \\ + PCB routing & In progress \\ + Tile footprint correction & In progress \\ + Board manufacturing & Planned \\ + Hardware testing & Planned \\ + \bottomrule + \end{tabular} + \end{table} + \subsection{Bicycle-Cargo System Control Results} \subsubsection{Simulation Results} @@ -476,6 +645,19 @@ What should be a clear conclusion from our test with the jammer is that a contro avoided when possible and practical. Examples where this could be relevant include electric skateboards, as cables could impose a tripping hazard. There, an encapsulation of an encrypted control frame could be an thought. +% ******************************** Perspectives and Future Work ************************************************************ + +\section{Perspectives and Future Work} + +Based on the results obtained and the limitations identified during this +project, several directions for future work are proposed. + +\subsection{Hardware Completion and Testing} +The VESC-based FOC PCB requires routing completion and prototype +manufacturing. Once fabricated, the board must be tested under real +operating conditions (varying loads, road profiles, and battery voltage). + +% ******************************** CONCLUSION ************************************************************************** \section{Conclusion/Summary} @@ -495,8 +677,29 @@ impose a tripping hazard. There, an encapsulation of an encrypted control frame %quantities and units. For example, write ``Temperature (K)'', not %``Temperature/K''. +% ******************************** REMERCIEMENTS ************************************************************************** + \section*{Acknowledgment} +The authors would like to thank Pascal Acco and Thierry Rocacher for their +continuous technical guidance and support throughout this project. Their +expertise in power electronics, embedded systems, and PCB design was +invaluable. + +We also thank La Manufacture Autonome Décentralisée (LaMAD) for providing +the use case, the technical requirements, and the cargo bike platform used +for validation. + +Finally, we acknowledge the INSA Toulouse GEI department for providing +access to laboratory facilities, measurement equipment, and the necessary +components for prototyping. + +This work was carried out as part of the 4th-year research project (PIR) +at INSA Toulouse. + +% ******************************** IA ************************************************************************** +\section*{Statement on AI Usage} + The authors acknowledge the use of generative AI tools during this project, both for the development work and for writing this paper.